Development Information

The information here is mainly for the development team.

Maven settings

Some maven features require acces to private information. For example, deploying website from Maven via scp requires Sourceforge's shell credentials. Following describes how to set-up Maven's settings.xml file.

Maven settings.xml file is located in the root of the Maven home directory (on ***xes it is ~/.m2/settings.xml).

Following shows the settings content that facilitate access to Sourceforge's web space (credentials are used for site:deploy goal that installs new version of project's website on sourceforge).

<?xml version="1.0" encoding="UTF-8"?>
<settings>
    <servers>
        <server>
            <id>sourceforge</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

Building from sources

Checkout current trunk from subversion:

$ svn co https://otfeed.svn.sourceforge.net/svnroot/otfeed/trunk/otfeed-all

Change dir to

$ cd otfeed-all

Set-up Eclipse descriptors:

$ mvn eclipse::eclipse

Compile and install all packages:

$ mvn install

Generate site:

$ mvn site
Note that as part of site generation maven will build JavaDocs and Xref reports, and assembly source and javadocs zip files.
target/otfeed-all-X.X.X-src.zip
target/otfeed-all-X.X.X-javadoc.zip

Package main binary artefacts:

$ mvn package
This command will generate the following files:
otfeed-driver/target/otfeed-driver-X.X.X.jar
otfeed-script/target/otfeed-script-X.X.X-bin.zip

Convenient command to do a complete local build:

$ mvn clean package site

Deploy site to the sourceforge (need private settings.xml configured, as described above):

$ mvn site-deploy

Cutting a release

Releasing a software version includes:

  • Bumping up the release number.
  • Copying current SVN trunk to a tag using the release number as tag name.
  • Deploying website to Sourceforge.
  • Preparing artifacts for uploading to Sourceforge's file release system.
Maven allows to do this in following three steps:
$ mvn -Dusername=username -Dpassword=password release:prepare
When prompted, answer questions (accept most of the defaults, except for the tag name in source management repository - change it to numeric release number only). Note that credentials supplied are the ones that give write access to SVN repository (this maven goal will commit upgraded versions of pom.xml files and create a new tag that corresponds to the release).
$ mvn -Dusername=username -Dpassword=password release:perform
Following artifacts have to be manually ftp'ed to the sourceforge and released via sourceforge file release manager:
$ cd target/checkout
$ ls target/otfeed-all-X.X.X-src.zip
$ ls target/otfeed-all-X.X.X-javadoc.zip
$ ls otfeed-driver/otfeed-driver-X.X.X.jar
$ ls otfeed-script/otfeed-script-X.X.X-bin.zip
After this is done, cleanup the release:
$ mvn release:clean