Community
Participate
Working Groups
Updating the version of javax.persistence, bnd, and many other jars used in the build requires searching the entire SVN repository and looking for references to the current hard wired version number. This is both tedious, error prone (as I've discovered), and contradicts the "once and only once" rule. Where jars need to be fully qualified with version that information should be captured in a single location for ease of update.
There are several factors that have forced the evolution of the system to the way it is, and while I'd love to centralize the data those same considerations make it very difficult. - It was/is still a build requirement that components can be built stand-alone (from foundation/org.eclipse.persistence.core for the core bundle) or individually and as a group from "root". To do so and centralize the variable information a single location accessible from all levels would need to exist. None has been agreed upon. And pathing information is also incompatible with this method (paths are established at runtime based, and cannot be hard-coded). 2) Ant variables become static once defined. This make the above issue a bit easier because once a variable is set it won't be changed by another definition. This means that a path can be set at the root, and in a component to be a different values, and depending upon where the build is invoked the value assigned first will be the appropriate one. 3) While I disagree that "once and only once" is a rule, it is a best practice for build maitenance. However, in my experience "no spagetti dependencies" out ranks it. A build project should only know (and need to know) about itself to execute. Given the directory structure we've imposed on the project as a whole, following either best practice and maintaining them has been a challenge. Thus in my opinion it is smarter, and easier to have the build itself discover its dependencies (jar versions and locations) at runtime, and remove the need for static definitions altogether. It is my intention to do so for quite a while, and the means have been developed to do so (and the build has ben altered to implemented it for bnd), I just haven't had the time to implement across the board, given the push to move to Tycho. I have been adapting to a dynamic approach as need arises, and will continue to do so as long as the ant system is in use.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink