Using a Custom Announcement Template
The announcement-generate
goal uses a Velocity template to create an announcement. If you want to, you can create your own custom template.
Configuring the Plugin
First you must configure the plugin and tell it where your template is. In this example we want to use the template ${basedir}/src/main/resources/our-announcements/my-announcement.vm
.
Note: The <templateDirectory>
must be a subdirectory of ${basedir}/src/main/resources/
.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<template>my-announcement.vm</template>
<templateDirectory>our-announcements</templateDirectory>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Creating Your Template
Next you want to create your own template. A wise thing is to start with the default one that is included in the plugin. You can download it from here. It will provide you with examples on how to iterate over the actions of a release among other things.
Available Variables
Here's a list of the variables that you have at your disposal, when creating your own template:
Variable | Type | Since | Description |
releases* | List | 2.0 | All the releases from either the changes.xml file or from JIRA. |
groupId* | String | 2.0 | The groupId from your project's pom. |
artifactId* | String | 2.0 | The artifactId from your project's pom. |
version* | String | 2.0 | The version from your project's pom. |
packaging* | String | 2.0 | The packaging from your project's pom. |
release* | Release | 2.0 | The release that you are announcing. |
project* | MavenProject | 2.1 | The Maven Project being released. |
url | String | 2.0 | Distribution url of the artifact. Default value is: ${project.url} . |
introduction | String | 2.0 | A short description or introduction of the released artifact. Default value is: ${project.description} . |
developmentTeam | String | 2.0 | Name of the team that develops the artifact. Default value is: ${project.name} team . |
finalName | String | 2.0 | The name of the artifact to be used in the announcement. Default value is: ${project.build.finalName} . |
urlDownload | String | 2.0 | URL where the artifact can be downloaded. Default value is: ${project.url} . |
announceParameters | Map | 2.1 | A Map of custom parameters that can be specified in the plugin's configuration. |
Each Release
also has a set of variables:
Variable | Type | Since | Description |
actions* | List | 2.0 | All actions that were completed in this release. |
dateRelease* | String | 2.0 | The date when this release is made. |
description* | String | 2.0 | A description of the release. |
version* | String | 2.0 | The version of this release. |
Finally each Action
has the following variables:
Variable | Type | Since | Description |
action* | String | 2.0 | What was done. |
date | String | 2.0 | Fix date. |
dev* | String | 2.0 | The developer who made the change. |
dueTo* | String | 2.0 | If this was a contribution from a non-committer, the name of that person. |
dueToEmail* | String | 2.0 | If this was a contribution from a non-committer, the e-mail address of that person. |
issue* | String | 2.0 | The key of the issue in your issue tracking system. |
type* | String | 2.0 | What kind of change was this. |
dueTos* | List | 3.0 | Collection of parsed dueTo and dueToEmail. Each item has variable name and email. |
fixedIssues* | List | 3.0 | Collection of fixed issues. |
Velocity Context contains all default tools provided by the ToolManager. See the Tools Usage Summary for further details.
For information on how to access variables in your template and more, see the Velocity user guide.