Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/Build/NextGen/TychoAgenda
< EclipseLink | Build | NextGen
Contents
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?).
- configured most of our OSGi bundles to build using Tycho, and generate Eclipse style source bundles (exceptions being asm, antlr, javax.persistence, and oracle).
- 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.
Caveats
- Build now depends upon another tool, and has additional external dependencies. Cannot reduce without moving everything over to Maven.
Questions
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
Cons
- lots of work
- others??