JCrypTool Tycho builds finally working

The last couple of days brought a lot of updates for the Eclipse Tycho build in JCrypTool. And I‘m happy to say that everything is working now (except some minor issues). Since JCrypTool is a rather complex RCP (about 45 core plug-ins/ features, about 75 crypto plug-ins/ features) the setup required quite some time and restructuring. The crucial factor was to create and reorganize three main projects: org.jcryptool.releng is our new main project containing the parent pom used to start the build process. org.jcryptool.product contains the product configuration as well as additional product config files and our target platform configuration. org.jcryptool.repository contains the p2 update site and (important) the categories for this update site. Separating this three project more or less did the main trick. Have a look at these pom files to get started.

As I‘ve said before, some stuff is still missing. For one I‘m looking for a way to update certain property-files with the current release date before the build. And I‘m a little bit unhappy about the filenames of the generated artifacts. In order to get useful filenames I‘m using maven-antrun-plugin for renaming them as the final step. I would expect that there is a way to configure Tycho to do this, but couldn‘t figure it out. The final item on my list is the target platform. At the moment we are using the Eclipse repository for Indigo and the Babel Indigo repository. This is painfully slow. However, setting up a maven mirror did only work for Babel, not for Eclipse Indigo. The problem here are some unresolved dependencies.

Eclipse Tycho is a nice build tool, but it is (very) hard to set up. Depending on the complexity of your RCP it takes a long while to get everything working. Starting with a simple RCP did not work out for me, the problems came along with JCrypTool and its complexity. What has helped a lot was the separation into the three projects I‘ve mentioned above. Better do that from the beginning. And keep your plug-in dependencies clean.

Solved the first open task to integrate the build number in certain property files with the help of a good blog post.