Building

Checkout

We will just checkout the needed projects (anonyoumous and with username):

svn co svn+ssh://svn.code.sf.net/p/openpatrician/code/trunk/OpenPatrician OpenPatrician
svn co --username=<username> https://svn.code.sf.net/p/openpatrician/code/trunk/OpenPatrician OpenPatrician

or update an existing project:

svn up OpenPatrician

Maven

Standard maven build:

mvn clean install

The executable jar is located in the OpenPatricianStandalone module that is only present in the application profile. Executing

mvn clean install -Papplication

will create an executable jar, while the build of OpenPatricianStandalone module may fail, due to missing setup for the native build

Site build:

mvn site

Native build

Native artifacts are created during the install phase of your standard Maven build for your environment. The artifacts can be found in OpenPatricianStandalone/target/native.

Release

  1. Run through the installation loacaly: mvn clean install
  2. Test also the creation of the sources and javadoc: mvn source:jar
  3. Verify that site build works: mvn site
  4. Make sure everything under the working directory is committed or ignored
  5. Check out the code from the repository into a new directory with the user matching your SVN user. This important as there are commits to be made in the release process that will fail when using the wrong user. Do this in an environment that has a UI, as otherwhise the tests requiring a UI will fail.
  6. Verify that all test run through successfully mvn clean test
  7. Run mvn -DautoVersionSubmodules=true release:prepare -Papplication. Here the release version is requested as well as the next development version. Usually the release version matches with the one suggested, but the next development version is wrong. You are also asked for your SVN credentials as various resources are updated and committed back to the repository and tagged.
  8. If the release preparation succeeds you can do mvn release:perform -Papplication. Here also your SVN and gpg credentials are required as the release is checked out.
  9. Potential pitfalls in the releasing are faulty gnugpg configuration or missing maven settings configuration. See http://central.sonatype.org/pages/apache-maven.html
  10. Once the release is finished the artifacts must be signed and deployed to the Sonatype Nexus (be sure that your uplink is stable and has enough capacity to avoid failure of the upload due to reset of the network connection):
cd target/checkout
mvn verify -Papplication,deploy
mvn nexus-staging:release
  1. Log into the sonatype Nexus (https://oss.sonatype.org) and chose your newly deploed project. It can be found under Staging Repositories and is probably the last on the list.
  2. Hit the close button with the project selected. This will trigger the validation of the artifact.
  3. After successful validation you can then hit the release button which will promote the artifacts to Maven Central.
  4. Generate the updated plantUMLs from code by running: ModuleDependencyGraphCreator, StrategyClassDiagramCreator and TradeStepClassDiagramCreator
  5. Create site build for the release: mvn site
  6. Deploy site documentation to project web page.

For a complete desciption see http://central.sonatype.org/pages/ossrh-guide.html

Creating a native build

The native builds for the building environment are produced in the install phase of the OpenPatricianStandalone module:

mvn clean install -Papplication

In order for the build to not fail certain criteria have to be met for the environments:

Linux

Build environment for deb and rpm packages ares installed:

  • deb: dpkg-deb fakeroot
  • rpm: alien

MacOs

No special conditions.

Windows

Build environment for exe and msi installer must be set up:

  • exe installer: Inno Setup 5 or later
  • msi installer: WiX 3.0 or later

Creating executable build

The executable jar file is created during package phase of OpenPatricianModule.

Deploy the binary to sourceforge

  1. Go to the directory OpenPatricianDisplay/target/jfx/native/OpenPatricianDisplay-<version>/app
  2. Copy the jar file and the lib folder to a different directory
  3. Rename the the jar file to OpenPatrician-<version>.jar
  4. Create a zip archive of the jar file and the lib folder. The jar file is a standalone executable that references the dependencies in the lib foulder.
  5. Create a folder with the appropriate version on https://sourceforge.net/projects/openpatrician/files/ and change into that folder.
  6. Upload the created zip archive. For larger files (>100MB) It might be easier to use sftp: https://sourceforge.net/p/forge/documentation/Release%20Files%20for%20Download/#sftp
  7. For each platform that provides a native package uploade the zip archive located in OpenPatricianDisplay/target
  8. Create a README file and upload it as well
  9. Write a release blog post
  10. Create a news post on sourceforge to link the blog post, executable binary and readme
  11. Update the download link for the latest version by clicking on the info icon in the list and select the environments.

The unknown creature - The Maven release Cycle