diff --git a/src/it/report-changes-generation/verify.groovy b/src/it/report-changes-generation/verify.groovy
index 669f6e4d..44a6976b 100644
--- a/src/it/report-changes-generation/verify.groovy
+++ b/src/it/report-changes-generation/verify.groovy
@@ -40,3 +40,6 @@ assert content.contains('Thanks to External Submitter,')
assert content.contains('others')
// no link to empty dev value
assert content.contains('| - | ')
+
+// HTML tags in action text are escaped, and not passed as raw text
+assert content.contains('<strong>HTML tags</strong> are escaped and not passed as raw text.')
diff --git a/src/main/java/org/apache/maven/plugins/changes/ChangesReport.java b/src/main/java/org/apache/maven/plugins/changes/ChangesReport.java
index ba98d6b3..fba4028c 100644
--- a/src/main/java/org/apache/maven/plugins/changes/ChangesReport.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesReport.java
@@ -75,6 +75,21 @@ public class ChangesReport extends AbstractChangesReport {
@Parameter(property = "changes.addActionDate", defaultValue = "false")
private boolean addActionDate;
+ /**
+ * Whether the change description should be escaped (default), or passed as is to the report renderer.
+ *
+ *
+ * Example: If you are generating the changes report as HTML, and want HTML tags included in your changes XML
+ * (like <b>Bold</b>) to be interpreted correctly in the generated output, you have to set this
+ * parameter to false. You can use a <![CDATA[...]]> block in your changes XML to
+ * enclose descriptions with HTML tags.
+ *
+ *
+ * @since 3.0
+ */
+ @Parameter(defaultValue = "true")
+ private boolean escapeText;
+
/**
* The directory for interpolated changes.xml.
*
@@ -243,6 +258,7 @@ public void executeReport(Locale locale) throws MavenReportException {
}
report.setLinkToFeed(feedGenerated);
+ report.setEscapeText(escapeText);
report.render();
diff --git a/src/main/java/org/apache/maven/plugins/changes/ChangesReportRenderer.java b/src/main/java/org/apache/maven/plugins/changes/ChangesReportRenderer.java
index 555dddf5..95148f2e 100644
--- a/src/main/java/org/apache/maven/plugins/changes/ChangesReportRenderer.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesReportRenderer.java
@@ -73,6 +73,8 @@ public class ChangesReportRenderer extends AbstractIssuesReportRenderer {
private boolean linkToFeed;
+ private boolean escapeText;
+
public ChangesReportRenderer(Sink sink, ResourceBundle bundleName, ChangesXML changesXML) {
super(sink, bundleName);
this.issueLinksPerSystem = new HashMap<>();
@@ -106,6 +108,10 @@ public void setLinkToFeed(boolean generateLinkTofeed) {
this.linkToFeed = generateLinkTofeed;
}
+ public void setEscapeText(boolean escapeText) {
+ this.escapeText = escapeText;
+ }
+
/**
* Checks whether links to the issues can be generated for the given system.
*
@@ -159,7 +165,11 @@ private void constructAction(Action action) {
String actionDescription = action.getAction();
- text(actionDescription);
+ if (escapeText || StringUtils.isEmpty(actionDescription)) {
+ text(actionDescription);
+ } else {
+ sink.rawText(actionDescription);
+ }
// no null check needed classes from modello return a new ArrayList
if (StringUtils.isNotEmpty(action.getIssue())