diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/AbstractJiraMojo.java b/src/main/java/net/sigmalab/maven/plugin/jira/AbstractJiraMojo.java index 00becf4..c7aef94 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/AbstractJiraMojo.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/AbstractJiraMojo.java @@ -247,6 +247,10 @@ public String getSettingsKey() { return settingsKey; } + public String getJiraURL() { + return jiraURL; + } + public void setJiraProjectKey(String jiraProjectKey) { this.jiraProjectKey = jiraProjectKey; } diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/GenerateReleaseNotesMojo.java b/src/main/java/net/sigmalab/maven/plugin/jira/GenerateReleaseNotesMojo.java index 65f584d..3541a6f 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/GenerateReleaseNotesMojo.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/GenerateReleaseNotesMojo.java @@ -141,9 +141,9 @@ private void output(JiraRestClient restClient, Iterable issues) throws IO String formatPackage = ( format.contains(".") ? "" : "net.sigmalab.maven.plugin.jira.formats" ); Class clazz = Class.forName(formatPackage + "." + format); - Constructor constructor = clazz.getConstructor(JiraRestClient.class, Iterable.class, String.class, - String.class); - generator = (Generator) constructor.newInstance(restClient, issues, beforeText, afterText); + Constructor constructor = clazz.getConstructor(JiraRestClient.class, Iterable.class, String.class, + String.class, String.class); + generator = (Generator) constructor.newInstance(restClient, issues, this.getJiraURL(), beforeText, afterText); log.info("Using " + format + " format for release notes."); } diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/formats/Generator.java b/src/main/java/net/sigmalab/maven/plugin/jira/formats/Generator.java index d88950c..3357c01 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/formats/Generator.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/formats/Generator.java @@ -10,15 +10,17 @@ public abstract class Generator { private JiraRestClient restClient; protected IssueRestClient issueClient; private Iterable issues; + private String jiraUrl; private String beforeText; private String afterText; - public Generator(JiraRestClient r, Iterable i, String b, String a) { + public Generator(JiraRestClient r, Iterable i, String u, String b, String a) { this.restClient = r; this.issues = i; this.issueClient = restClient.getIssueClient(); - this.setBeforeText(b); - this.setAfterText(a); + this.jiraUrl = u; + this.beforeText = b; + this.afterText = a; } public abstract String addHeader(); @@ -60,15 +62,22 @@ public String getBeforeText() { return beforeText; } - public void setBeforeText(String beforeText) { - this.beforeText = beforeText; - } - public String getAfterText() { return afterText; } - - public void setAfterText(String afterText) { - this.afterText = afterText; + + protected String computeIssueUrl(Issue i) { + // Use the jiraUrl as the basis for the URL of the issue passed to the method. + // Do this by stripping back the URL to just .../browse/ ending and then append + // the issue key. + int position = jiraUrl.lastIndexOf("/browse/"); + + // If we haven't found /browse/ in the Jira URL then just return the issue key. + if ( position < 0 ) { + return i.getKey(); + } + + // Otherwise return the issue key appended to the substring of the Jira URL. + return jiraUrl.substring(0, position) + "/browse/" + i.getKey(); } } diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/formats/HtmlGenerator.java b/src/main/java/net/sigmalab/maven/plugin/jira/formats/HtmlGenerator.java index 7f51582..fc02a41 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/formats/HtmlGenerator.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/formats/HtmlGenerator.java @@ -9,19 +9,19 @@ public class HtmlGenerator extends Generator { static final String ISSUETEMPLATE = "[{1}]{2}"; static final String HORIZONTAL_RULE = "
"; - public HtmlGenerator(JiraRestClient r, Iterable i, String b, String a) { - super(r, i, b, a); + public HtmlGenerator(JiraRestClient r, Iterable i, String u, String b, String a) { + super(r, i, u, b, a); } @Override public String addHeader() { return ""; } - + @Override public String addRow(Issue i) { return "" + - format(ISSUETEMPLATE, i.getSelf(), i.getKey(), i.getSummary()) + + format(ISSUETEMPLATE, this.computeIssueUrl(i), i.getKey(), i.getSummary()) + ""; } diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/formats/MarkDownGenerator.java b/src/main/java/net/sigmalab/maven/plugin/jira/formats/MarkDownGenerator.java index ed19b8e..4b99e17 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/formats/MarkDownGenerator.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/formats/MarkDownGenerator.java @@ -9,8 +9,8 @@ public class MarkDownGenerator extends Generator { static final String ISSUETEMPLATE = "| [{0}]({1}) | {2} |"; static final String HORIZONTAL_RULE = "---"; - public MarkDownGenerator(JiraRestClient r, Iterable i, String b, String a) { - super(r, i, b, a); + public MarkDownGenerator(JiraRestClient r, Iterable i, String u, String b, String a) { + super(r, i, u, b, a); } @Override @@ -20,7 +20,7 @@ public String addHeader() { @Override public String addRow(Issue i) { - return format(ISSUETEMPLATE, i.getKey(), i.getSelf(), i.getSummary()); + return format(ISSUETEMPLATE, i.getKey(), this.computeIssueUrl(i), i.getSummary()); } @Override diff --git a/src/main/java/net/sigmalab/maven/plugin/jira/formats/PlainTextGenerator.java b/src/main/java/net/sigmalab/maven/plugin/jira/formats/PlainTextGenerator.java index a72244b..7d8b8bf 100644 --- a/src/main/java/net/sigmalab/maven/plugin/jira/formats/PlainTextGenerator.java +++ b/src/main/java/net/sigmalab/maven/plugin/jira/formats/PlainTextGenerator.java @@ -10,8 +10,8 @@ public class PlainTextGenerator extends Generator { static final String HORIZONTAL_RULE = "=============================="; - public PlainTextGenerator(JiraRestClient r, Iterable i, String b, String a) { - super(r, i, b, a); + public PlainTextGenerator(JiraRestClient r, Iterable i, String u, String b, String a) { + super(r, i, u, b, a); } @Override diff --git a/src/test/java/net/sigmalab/maven/plugin/jira/testClasses/GenerateReleaseNotesMojoTest.java b/src/test/java/net/sigmalab/maven/plugin/jira/testClasses/GenerateReleaseNotesMojoTest.java index c59c07a..5d9babc 100644 --- a/src/test/java/net/sigmalab/maven/plugin/jira/testClasses/GenerateReleaseNotesMojoTest.java +++ b/src/test/java/net/sigmalab/maven/plugin/jira/testClasses/GenerateReleaseNotesMojoTest.java @@ -59,6 +59,7 @@ public void setUp() throws Exception { releaseNoteMojo.setJiraUser("user"); releaseNoteMojo.setJiraPassword("password"); releaseNoteMojo.setJiraProjectKey("DUMMY"); + releaseNoteMojo.setJiraURL("https://dummy.jira.server/browse/KEY"); releaseNoteMojo.setBeforeText("This is BEFORE TEXT"); releaseNoteMojo.setAfterText("This is AFTER TEXT"); releaseNoteMojo.setJiraProjectKey("KEY"); diff --git a/src/test/resources/expectedReleaseNotes.html b/src/test/resources/expectedReleaseNotes.html index b10f2a2..ecb675a 100644 --- a/src/test/resources/expectedReleaseNotes.html +++ b/src/test/resources/expectedReleaseNotes.html @@ -4,10 +4,10 @@ KeySummary -[DUMMY-1]Dummy Issue -[DUMMY-4]Dummy Issue -[DUMMY-3]Dummy Issue -[DUMMY-2]Dummy Issue +[DUMMY-1]Dummy Issue +[DUMMY-4]Dummy Issue +[DUMMY-3]Dummy Issue +[DUMMY-2]Dummy Issue
diff --git a/src/test/resources/expectedReleaseNotes.md b/src/test/resources/expectedReleaseNotes.md index b3cb046..c426e4d 100644 --- a/src/test/resources/expectedReleaseNotes.md +++ b/src/test/resources/expectedReleaseNotes.md @@ -2,9 +2,9 @@ This is BEFORE TEXT --- | ISSUE KEY | SUMMARY | |-----------|---------| -| [DUMMY-1](null) | Dummy Issue | -| [DUMMY-4](null) | Dummy Issue | -| [DUMMY-3](null) | Dummy Issue | -| [DUMMY-2](null) | Dummy Issue | +| [DUMMY-1](https://dummy.jira.server/browse/DUMMY-1) | Dummy Issue | +| [DUMMY-4](https://dummy.jira.server/browse/DUMMY-4) | Dummy Issue | +| [DUMMY-3](https://dummy.jira.server/browse/DUMMY-3) | Dummy Issue | +| [DUMMY-2](https://dummy.jira.server/browse/DUMMY-2) | Dummy Issue | --- This is AFTER TEXT \ No newline at end of file