Skip to main content
Jump to: navigation, search


Tycho Adoption

Maven/Tycho Overview

What is Maven, Tycho, how is it different from ant.
  • Ant is like a lego set. It provides a set of 'tasks' that can be put together however you want to do something.
  • Maven is a build framework/model, that uses plugins to perform specific jobs at a specific time (compile source, generate jars, run tests, etc)
  • Tycho is a Maven plugin that builds OSGi bundles, either from a POM (generate manifest) or Manifest-first.

Our goal

  • To switch to building our OSGi bundles manifest first, with minimal impact on overal process.

Our planned usage

  • Setup Maven Tycho projects to build OSGi bundles
    • configured most of our OSGi bundles to build using Tycho, and generate Eclipse style source bundles (exceptions being asm, antlr, javax.persistence, and oracle).
      • skipped for several reasons:
      • javax.persistence shouldn't build regularly
      • antlr and asm build from class files and do not change they also shouldn't be build regularly.
      • oracle process will be separate, may move to checking in or contributing to the compile dependency p2 the oraclecompiled copy (legal?).
  • Call above from Ant to generate build

Planned changes

  • resource dir structure
    • all resources in selected herarchy are included cannot seem to setup any kind of scripted exclude
  • manifest changes
    • DBWS, DBWS Builder : servlet needs to be required bundle, not package import.
    • SDO : commonj-sdo needs to be required bundle
  • build-dependency P2 repo
    • Maven pulls in all dependencies from a repo (virtual or actual p2 or maven format)
  • asm/antlr generation.


  • Build now depends upon another tool, and has additional external dependencies. Cannot reduce without moving everything over to Maven.


Maven Adoption

What would need to change?

  • directory/project structure
    • src tree
    • project names need to match artifact IDs

Why change (Pros)?

  • May allow easier adoption and contribution if in a common build framework
  • Currently we are circumventing most of the power of Maven.
    • cannot automatically run tests
    • circumventing 'defaults'. is non-standard
    • cannot utilize Tycho to generate features, or P2 site
    • cannot generate other artifacts, jar, javadoc, etc. due to current hierarchy.
    • appears we cannot utilize maven plugins to build on demand without Source repo linkage
    • no source repo linkage without project restructure


  • lots of work
  • others??


Back to the top