We have tried to make this plugin extensible to be adaptable. There are three ways to extend it:
Well it is quite simple:
list command on the tags repository. This gives us a list of tags (that we are considering as releases).log command between its startrevision and end revision. This way we get a list of log entries.
The bug trackers are defined in the class org.codehaus.mojo.scmchangelog.tracker.BugTrackers.
They implement the interface org.codehaus.mojo.scmchangelog.tracker.BugTrackLinker whose only method is here to provide a link to the bug description for this bug tracker with the bug id as parameter.
We provide three examples of bug trackers: SourceForge, JIRA, and Bugzilla. Our bug trackers use the issue management url from the pom, but you can also define your own through the plugin's configuration.
The grammars are defined in the class org.codehaus.mojo.scmchangelog.changelog.log.GrammarEnum.
They implement the interface org.codehaus.mojo.scmchangelog.changelog.log.SvnGrammar with three methods:
Message extractMessage( String content ): where we extract the issues from the comment. boolean hasMessage( String content ): where we test for issues from the comment. If none is found the comment will ignored.String getIssueSeparator(): which returns the separator of issue comment, if the comment is about several issues.org.codehaus.mojo.scmchangelog.changelog.log.grammar.ManuSvnGrammar and org.codehaus.mojo.scmchangelog.changelog.log.grammar.RemySvnGrammar.
They are extensions of org.codehaus.mojo.scmchangelog.changelog.log.grammar.AbstractSvnGrammar, a helper class for regexp based grammars.
To be frank, I don't know how hard it would be to use another SCM.
We are using Maven's SCM API to be independant from the SCM.
To be able to use another SCM, one would have to provide the command and the consumer for the list and changelog commands.
And we would have to update the code so that our ScmProviders would be used instead of those of the SCM API.