Escidoc Building and Developing Environment
The build infrastructure consists of several servers and tools to support all developers and testers of the escidoc project in the development process.
The build process is supported by several servers:
- Nexus, which holds all the binary artifacts (including external and internal binary dependencies), works as artifacts proxy
- Continuum, a testing server for nightly builds, unit- and integration testing, releases
- Maven, a software project management and comprehension tool, used for building, testing and release management
- Subversion, a source control management tool, with the following repositories:
The release management takes care of building new releases which are automatically transferred to archiva to make it available to the public. The eSciDoc Release Lifecycle is responsible that any tasks involved are correctly implemented. After the release is done, the next step is to deploy the release binary to a target system.
The necessary steps for a deployment is highly affected on the domain of the target system.
Setting up the workstation
In oder to work on a specific project, you need to setup your workstation to contribute your effort. These Howtos shall help you to install maven and include your favourite IDE in the developing process.
- Installation of maven
- Maven settings and profiles
- Maven integration in eclipse
- Enabling incremental hot deploy with JRebel (optional)
- Coding templates, formatter and standards
Deploy own libraries to archiva
To deploy own external(!!!) libraries to archiva, use the following instructions in a shell:
mvn deploy:deploy-file -DgroupId=<groupid> -DartifactId=<artifact-id> -Dversion=<version-number> -Dpackaging=jar -Dfile=/path/to/file -Durl=http://archiva.mpdl.mpg.de/archiva/repository/internal -DrepositoryId=deployment.webdav
- Before uploading any libraries, check if the artifact you wish to upload is already in the repository. Use the Find artifact functionality of archiva to ensure this.
- If the upload fails, check if you have the permissions to upload artifacts to the internal archiva repository
The project webpage is a useful information resource for developers or any other interested people. The project webpage contains useful information on the build environment, source code access, javadocs, code analysis etc.
All the information of a project is visible on an apache server by project. The current RELEASED project descriptions are:
Information about the current development can be found in the SNAPSHOT project descriptions:
Most of the data on the project webpage is created automatically by maven itself. If you want to add your own content to the project webpage or modify an exsiting one, take a look at the Maven project site guide.
Maven: The Definitive Guide : A deeper look onto Maven.
Current problems and workarounds
- A release with the continuum build server doesn't work. When preparing the release, continuum complains that it cannot handle snapshot dependencies when you do a single module release.
[INFO] Updating local copy against the scm... [INFO] Verifying that there are no local modifications... [ERROR] org.apache.maven.shared.release.ReleaseFailureException: Can't release project due to non released dependencies : de.mpg.escidoc.services:common_services:pom:1.0.2-SNAPSHOT org.apache.maven.plugins:maven-changes-plugin:maven-plugin:2.0-SNAPSHOT:runtime in project 'endnotemanager' (de.mpg.escidoc.services:endnotemanager:ejb:1.0.2-SNAPSHOT) at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.checkProject(CheckDependencySnapshotsPhase.java:240) at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.execute(CheckDependencySnapshotsPhase.java:106) at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:194) at org.apache.maven.shared.release.DefaultReleaseManager.prepareWithResult(DefaultReleaseManager.java:107) at org.apache.maven.continuum.release.executors.PrepareReleaseTaskExecutor.execute(PrepareReleaseTaskExecutor.java:43) at org.apache.maven.continuum.release.executors.AbstractReleaseTaskExecutor.executeTask(AbstractReleaseTaskExecutor.java:67) at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116) at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:987) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:528) at java.lang.Thread.run(Thread.java:595)
- The strange behavior is, it works if you do a command line release.
- Maven has currently problems with tagging a release, if the svn client is > 1.5 It aborts with a 'Item already tagged error'
- Use these commands for a workaround:
svn up -r head mvn release:prepare -Dresume