Shows how the Apptools Maven Plugin supports Unique Snapshot Versions.
If snapshot versions are deployed to a Confluence server, it may difficult for administrators to determine which version is actually running. If the build sets a timestamp to the snapshot version in the
atlassian-plugin.xml, the administration has a much easier job to determine the version of the deployed app. Using the REST API, this version information is also useful to prevent deploying a version that is already deployed.
This use case shows the configuration for working with Unique Snapshot Versions. There are many alternative approaches to achieve the same result. Please consider this only as one option among many.
Unique Snapshot Versions
Unique Snapshot Versions are not really unique in a broad sense. The snapshot version has its qualifier SNAPSHOT replaced by a formatted timestamp (
If the build of versions is a sequential process this timestamp at seconds precision is typically unique.
Adding Unique Snapshot Versions
To use Unique Snapshot Versions you need to replace the version in snapshot build with a formatted timestamp for the version specified in the
Per default, that is on every build that is not a release build, the property is set with the version information.
The properties shown above are provided by the Buildmetadata Maven Plugin (please use version 1.7.0 or later). You may use other tools. What is important that the property you specified in the
atlassian-plugin.xml is provided by the build process.
In case of a release build, the version provided by the POM should be set. Otherwise the administrator could not easily determine, if the app is in a released or snapshot version.
Specify a profile you activate with the Maven Release Plugin.
This seems simple, but the only why we accomplished that for version 2.5.3 is using the arguments parameter.
atlassian-plugin.xml in app archive
The generated archive contains the atlassian-plugin.xml with the timestamped version for snapshot builds.
For releases, the version does not contain the timestamp.
Using Unique Snapshot Versions
The qualifier of a deployed app is parsed with the date format specified by the
qualifierDatePattern (which defaults to
yyyyMMdd.HHmmss) and compared to the version of the app configured with the Apptools Maven Plugin.
The timestamp must be provided by the app's artifact. The Apptools Maven Plugin looks at the following locations (in the given order):
|File in Archive||Type||Element in File||Format|
|XML||First element with name 'version'.||As specified by the |
|Properties||Property with name '||long (ms)|
|XML||First element with name '||long (ms)|
|JAR Manifest||Last modified time of the file.||long (ms)|
The lookup in
atlassian-plugin.xml is provided since version 0.11.0.
In case the Apptools Maven Plugin could evaluate the timestamp and determine that the deployed app is up-to-date the following is rendered:
-DdryRun is used and the local version is new, then the console shows the following: