Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

EclipseLink/Build/Tycho

< EclipseLink‎ | Build
Revision as of 08:24, 29 September 2011 by Eric.gwin.oracle.com (Talk | contribs) (What changes?)

Using Tycho with EclipseLink (2.4.0)

Tycho is a Maven plugin designed to generate OSGi bundles and Eclipse plugins. It's use is fairly transparent both in the automated system, and with the Eclipse IDE. However, this change was made primarily to move to a "manifest-first" build approach (the OSGi manifest files are parsed to determine dependencies and to build the software), this is a fundimental change from the previous methodology of building the software using predifined dependencies and classpaths, then generating an OSGi manifest and bundle post-compile. This paradym change will have profound impact upon development, as package development will no longer be divorced from Manifest maintenance. Also manifest issues will be more visible as they are used to build the product and any problems will be visible much sooner.

What changes?

  • A new build tool is needed - Since Tycho is a Maven plugin, this change means adding Maven as a component of the build system. In general Maven approaches building quite differently from Ant. Rather than being a general "toolbox" like Ant, Maven is a "build framework" where one defines specifics of the project the the default build process. While much of the default assumptions could be overridden, doing so to conform to our existing processes would be counter-productive.
  • Only OSGi plugin builds have changed tooling - much of our build involves processes that do not currently conform to Maven standards (Testing, EclipseLink jar from bundle generation, Eclipse feature generation, P2 generation, publishing, etc). Therefore, we currently are only adopting Maven/Tycho for the bundle generation portion of the build. The Maven build is called by Ant, which continues to provide the majority of the build infrastructure. However, doing so forces us to bypass much of the capabilities of Tycho (dynamic hierarchical generation of bundles into features published into a p2 and/or Maven repository). For this reason, among others, we are continuing to evaluate moving towards Maven as the primary build tool with subsections of the build calling out to Ant (testing).
  • Tycho POMs hard-coded to use outside IDE - it may be possible to define different configurations, but this is not planned for the initial iteration.
  • Tycho needs Maven/P2 access to compile dependencies - A p2 repository has been setup to hold our non-Orbit (and non-proprietary) dependencies. This means also that some plugins that are currently build during every build are now going to be built outside the nightly process (ASM/ANTLR) similar to javax.persistence.
    • ASM/ANTLR version changes - since they will be built on demand. ASM and ANTLR move to different versioning schemes based upon the version of the codebase used to repackage the libraries plus the build qualifier.

Back to the top