PCM Development/Build Infrastructure/Maven-based Build

Aus SDQ-Wiki

Parent POMs

Parent poms.png

For further detail (e.g., what the POMs cover and differences between them), please refer to the respective repository: MDSD.tools Parent POMs, Palladio Build Parent POMs

Custom Maven Plugins

We use a set of custom maven plugins to meet some specific requirements. In the following, we describe these plugins as well as the specific requirements addressed by the plugins.

Target Platform Refresher

The source code is available on Github. The plugin is deployed to maven central.

Requirements:

  • Merge multiple target platform definitions into one definition
  • Filter entries of target platform definition

The target platform refresher is a maven lifecycle extension. It evaluates properties of the root POM, builds a target platform definition and provides it via a virtual project. The target platform plugin of maven tycho can refer to the virtual project to use the generated target platform definition. For a full documentation, please refer to the Github repository.

Tycho JavaDoc Plugin

The source code is available on Github. The plugin is deployed to maven central.

Requirements:

  • Generate a JavaDoc documentation for a whole project consisting of multiple bundles

The JavaDoc plugin is a fork of the tycho-document-bundle-plugin. The introduced difference is that the plugin also considers the source folders of all projects, on which the current project depends. By adding the plugin to the lifecycle of the updatesite project, JavaDoc for all code shipped via the updatesite is generated. For a full documentation, please refer to the Github repository.

Tycho Versions Plugin

The source code is available on Github. The plugin is deployed to maven central.

Requirements:

  • Set versions of all bundles regardless of existing version

The versions plugin is a fork of the tycho-versions-plugin. The introduced difference is that the plugin allows setting a new version to artifacts regardless of the currently used version. This is useful to ensure that all artifacts have the same version. For a full documentation, please refer to the Github repository.

Release New Versions of Maven Build Parent POMs

  1. Release new version of MDSD-Tools Build Parent
  2. Release new version of PalladioSimulator Build Parent

Release new MDSD-Tools/Maven-Build-Parents version

  1. In MDSD-Tools Build Parent, remove SNAPSHOT from eclipse-parent version <version>0.7.4-SNAPSHOT</version> --> <version>0.7.4</version>
    1. eclipse/pom.xml
    2. eclipse/product/pom.xml
    3. eclipse/updatesite/pom.xml
    4. eclipse/updatesite-notp/pom.xml
  2. Create temporary branch, commit changes, push branch to GitHub
  3. Use the existing GitHub Action Release to Sonatype to fully release the new version on Sonatype
  4. For all files in 1. increment version number and add SNAPSHOT (<version>0.7.4</version> --> <version>0.7.5-SNAPSHOT</version>)
  5. Undo 2.
  6. Commit to branch, push to GitHub, create pull request an let approve

Release new PalladioSimulator/Palladio-Build-MavenParent version

  1. In PalladioSimulator Build Parent, remove Remove SNAPSHOT from pom and parent version <version>0.7.4-SNAPSHOT</version> -> <version>0.7.4</version> and <parent> ... <version>0.7.4-SNAPSHOT</version> ... </parent> -> <parent> ... <version>0.7.4</version> ... </parent>
    1. product/pom.xml
    2. updatesite-notp/pom.xml
    3. updatesite/pom.xml
  2. Follow 2. to 6. of Maven-Build-Parents