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

Difference between revisions of "EclipseLink/Build/Tycho"

(What changes?)
(What changes?)
Line 4: Line 4:
 
=== What changes? ===
 
=== 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.  
 
* '''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.  
* '''To limit changes only plugin builds are in Maven''' - much of our build involves processes that do not currently conform to Maven standards (Testing, EclipseLink jar from bundle generation, EclipseLink jar from bundle generation, Eclipse feature generation, P2 generation, publishing, etc). Therefore, we currently are only adopting Maven for the bundle generation portion of the build. This section 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).
+
* '''Only OSGi plugin builds are changed''' - much of our build involves processes that do not currently conform to Maven standards (Testing, EclipseLink jar from bundle generation, EclipseLink jar from bundle generation, Eclipse feature generation, P2 generation, publishing, etc). Therefore, we currently are only adopting Maven for the bundle generation portion of the build. This section 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 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''' - I have setup a repository to hold our non-____ 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) similare to javax.persistence.
 
* '''Tycho needs Maven/P2 access to compile dependencies''' - I have setup a repository to hold our non-____ 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) similare 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.
 
** '''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.

Revision as of 08:18, 29 September 2011

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 are changed - much of our build involves processes that do not currently conform to Maven standards (Testing, EclipseLink jar from bundle generation, EclipseLink jar from bundle generation, Eclipse feature generation, P2 generation, publishing, etc). Therefore, we currently are only adopting Maven for the bundle generation portion of the build. This section 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 - I have setup a repository to hold our non-____ 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) similare 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