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/NextGen

< EclipseLink‎ | Build
Revision as of 15:43, 10 December 2010 by Eric.gwin.oracle.com (Talk | contribs) (Issues needing resolution)

NextGen Build Investigation

Results of preliminary investigations

In investigating solutions that meet the requirements outlined, many strengths and weaknesses of existing systems were uncovered. Below is a summary of each system as I understand it currently.

- The current build system, based upon Ant running standalone, does not utilize any of the existing PDE settings configured for use within the eclipse IDE. This was intentional, and has strengths and weaknesses. First, it allows the 'official' builds to be completely independent of any IDE, or development tooling, since it relies soley upon ANT and the JDK within the OS environment. However, it also means that any development builds in the IDE are not reflective of the true 'state of the project'. In addition, most advanced functionality provided by the IDE needs to either be emulated, or duplicated by the build system.

- PDE (Plugin Development Platform) takes care of many OSGi related build and dependency issues, but its scope is limited. It is aware of zips and jars, but was not intended to be run outside an the Eclipse IDE.

- PDEBuild has been created to extend PDE functionality to these areas, and allow PDE to be used 'headlessly' (without a gui), but has similar drawbacks to Ant alone, in that the entire build is separate from the IDE - though it is much closer. It also has several hard-coded project assumptions.

- Athena is an Eclipse build tool that utilizes PDE and PDEBuild to handle the project setup portion, and drive automation.

- Buckminster is another tool that has come into use for builds recently (Ganymede/Galileo) at Eclipse. It is tightly integrated with several Eclipse technologies - P2, PDE, Equinox, and others (CVS, SVN, Git, Maven) as well as integrating with ANT. It is intended to provide a standardized project provisioning/build system that could be used by development during development, yet also funtion through the entire release cycle (perform the necessary tasks of provisioning, building, testing, and publishing automatically during the all phases of the development cycle). In addition, it advertises the capability of generating Maven Metadata for P2 repositories.

- B3 is an iteration upon Buckminster. Refining what was learned and strengthening its deficiencies. It is, however, in incubation and only the P2 aggregation portion of the tool is currently available. I have been unable to evaluate its full capabilites.

- Maven is a build tool intended to manage complex dependencies. It was initially created before OSGi, and in some ways competes with it. It also operates in the same domain as ANT, and its use would replace the existing system in entirety. MAven 2 is widely adopted, while Maven 3 is new on the scene.

-Tyco is a set of Eclipse extensions designed to allow an OSGi-based, Maven build strategy within the IDE. (replacement for PDE).

Below is a summary table:

System Pros Cons Comments or Wiki link
Ant flexable Not designed for OSGi; Needs extension; High Maintenance cost; constantly 'reinventing the wheel'; partially separate system than used in Dev
PDE Build Less extenstion needed than ant, get many features now have to 'hack' Complex, tied to Eclipse, uses own implimentation of ant, may still need extensions, high maintenance cost, IDE/headless build separate systems, tied to someone else's process, our versioning will need to change; headless and IDE use different processes
Buckminster Flexible; Designed to provide dynamic dependency mapping; is end-to-end build integration system; Collaboration between Maven and P2 and Buckminster teams; can utilize Ant, PDE, Maven 2/3 and or Tycho; headless and IDE use same processes closely tied to Eclipse; Complex - uses multible languages (learning cost); Requires interaction with multple teams
B3 Next Gen of Buckminster, Collaboration between Maven and P2 and Buckminster teams Incubation, Requires interaction with multple teams
Maven 2 Absolute Dependency stability (reproducability) Complete system rewrite, Non-OSGi aware, Not full solution? "Provisioning, building, testing, publishing" only provides 2-4, Maven 3 coming
Tycho Eclipse plugin to use Maven build, p2 aware, Maven2 and Maven3 aware, Collaboration between Maven and P2 teams Incubation; Requires interaction with multple teams; Only aware of maven, p2, OSGi, and features; complete system re-write


Ongoing evaluation

Upon review of the requirements and the tools available it has been decided to go forward with a proof-of-concept based upon Buckminster/PDE/Ant. Since buckminster seems to have the desired combination of scope, capabilities and flexability; while PDE is the same tool used by developement; and Ant can easily fill in any gaps. While it is possible that the combination of Buckminster/Tycho/Maven may be the ultimate iteration to fully replace the current shell/Ant system.

Issues needing resolution

Items found that will need group resolution/discussion include:

  • PDE/SVN integrations assume a flat project structure (trunk/org.eclipse.persistence.core). Fully integrating with these tools will require a SVN restructuring
  • Buckminster SVN integration assumes trunk/tags/branches followed by component structure (trunk/org.eclipse.persistence.core).
    • Also the branches/<branch>/trunk structure we are using is non-standard and will need to change.
    • It may be possible to write a custom resolver to deal with our current system though.
  • Buckminster and PDE appear to allow date or revision qualifiers, but not both. It may be possible to write a custom versioning scheme though.
  • PDE doesn't allow a newer compiler to generate older style classes (there is no ability to have 1.6 generate 1.5 classes).

Back to the top