Creating an OJ release version

From OpenJUMP Wiki
Jump to navigation Jump to search

New Build/Release Procedure

The new build and release procedure uses maven.

Always run maven in the root of the local repo folder. Meaning chdir into it first and make sure it is your current working dir.

Maven profiles

Command line to build and package OpenJUMP with maven is

 mvn package -P <profile>,<profile>,...

where profile is at least one of the following:

packages a snapshot of the basic edition core and plus (plus extensions from lib/plus)
builds of core and plus targeted for release, which can be named via
-D version.number=X.X.X -D version.release=release 
they mainly differ from snapshots because they
- do not contain source code
- do not expose language files in language/ folder
example results:

the following profiles can be added to build additional files

builds portable zip files, one per edition. takes care of setting executable bits and recompresses jar files.
example results:
installer (needs portable)
builds multi platform executable izpack installers (*.jar,*.exe) for both core and plus from the portable packaging
example result:
a zip file containing the source files of the build
example result:
build java doc html files for the current source
example result:

Build a release example

The command line to release a new version of OpenJUMP is

mvn package -P release[,portable[,installer]][,srczip][,javadoc] -D version.number=X.X.X -D version.release=release
  • for releases you might want to give a version.number (default=unknown) and a version.release (default=release)
  • version.release should have one of two values : release or snapshot


cd <git-clone-folder>/
mvn package -P release -D version.number=1.5.1

The release step by step list

  1. Check etc/readme.txt (new components, licenses, contributors ...?)
    1. update and commit.
  2. summarize the changes since the previous version in Changes.txt,
    1. either
      1. run
        mvn generate-sources
        and use the 'Unreleased commits' in generated file 'target/res/Git-log.txt' or
      2. just browse the online git repo commit log
    2. copy/sort out, commit
  3. change version in pom.xml
  4. add tag to repository e.g. '2.2.0'
  5. build e.g.
    mvn package -P release,portable,installer,srczip,javadoc
    will build release type portable distros, installer, src-zip and javadoc-zip
  6. test startup on all supported platform (if possible)
  7. update online git repo
    1. if all went to plan, push changes to online repo
    2. if not simply
      1. delete the tag
      2. change what is needed
      3. repeat from step add tag to repository above
  8. go to github project page and add a release, informational stub pointing to
  9. create release notes readme.txt (a modified readme.txt to be placed on files)
    1. append all changes in this minor version to the end (e.g. 2.1.0 - 2.1.2) as the folder holds them all
    2. add a table of contents point for changes at the beginning
    3. have a look at previous releases on as a reference
  10. upload files to sourceforge's file release system ( files)
    1. release files
      1. portable distros
      2. jar installers
      3. source zip
      4. javadoc zip (apidoc)
    2. release notes readme.txt ( files version)
  11. assign default download button per platform under file info (i)
  12. update Download links
    1. on Wiki front page
    2. on Download wiki page
    3. on website
  13. announce release
    1. on wiki frontpage news
    2. on the devel/user mailing lists

Old release process

  • update the readme.txt
  • summarize the changes to the previous version, based on the change log file (copy/sorting out)
  • compile everything with the Ant script (check the java version to compile against)
  • add the license, openjump.exe, and readme files (if not already included)
  • so the platform independent zip & source release may be ready after copying the lic files into the zip (but best is to compare the zip content of an older release with the just created version)
  • create a win-installer using Nullsoft NSIS (maybe with a pointer to download java 1.6) and include before-hand the ecw and mrsid libs into this edition (see also the notes on the svn for the past releases: e.g. for OJ 1.3.1)
  • create another zip/release version that includes the sextante tools, postgis and print-plugin; based on the platform independent zip
  • write the release notes
  • upload the files to sourceforge
  • make an announcement on slashgeo & our wiki & our sourceforge new section & change our webpage/links
  • finally, updating of the documentation on the wiki on the new functions