I successfully converted our product build from PDE build to Maven/Tycho. Something is worth to be documented here.
There are several examples and posts to demonstrate how using Tycho building your Eclipse plug-ins, features, applications and products. The most helpful example is the demo of Tycho project.
Below are some traps I met when building my project by Tycho,
product build
Our product is based on plug-ins, however we added the ‘featurelist’ in build.properties of PDE build to include some root binary for the product. However Tycho doesn’t support this type of build, we create some features as the placeholder of plug-ins. Then change the product as features based. You have to manually remove the plugins tag in .product definition file, otherwise Tycho will fail on strange error if the .produce has both features and plugins tag. Then configure the director plugin as not installing features.
org.eclipse.tycho
tycho-p2-director-plugin
${tycho-version}
materialize-products
materialize-products
false
myappprofile
archive-products
archive-products
And I used below way to customize the qualifier string of our build.
org.eclipse.tycho
tycho-packaging-plugin
${tycho-version}
'${qualifier-prefix}_'yyyyMMddHHmm
An limitation of director plugin is that no way using different profile name for the application installed on different hosts. I contributed a patch on bug 362550 for this enhancement.
eclipse test plug-in
I have a plug-in whose scope is ‘test’, but it doesn’t have test case and no dependency for any test framework, such as junit 3.8 or junit 4. And it’s used for mocking test server. Configure surefire plugin to let it build as test plug-in as well.
org.eclipse.tycho
tycho-surefire-plugin
${tycho-version}
junit
junit
4.1
false
junit
junit
4.1
And configure the surefire plugin like below to test code in Maven build.
org.eclipse.tycho
tycho-surefire-plugin
${tycho-version}
my.group
my.feature
${version}
eclipse-feature
my.group
my.testserver
1.0.0
eclipse-plugin
${testSuiteName}
${testClassName}
-Dcom.sun.management.jmxremote
-consoleLog
org.eclipse.equinox.ds
1
true
sign jars
Add below signjar plugin into parent pom.xml, however I met the md5 error when materializing the repository built on .product. There is a workaround mentioned on Bug 344691.
org.apache.maven.plugins
maven-jarsigner-plugin
1.2
${keystore}
MyCompany
${storepass}
${keypass}
true
${skip.jar.signing}
-tsa
https://timestamp.geotrust.com/tsa
**/artifacts.jar
**/content.jar
jar
eclipse-plugin
eclipse-feature
eclipse-test-plugin
sign
sign
verify
verify