[jboss-user] [EJB 3.0 Development] New message: "BOMs Away - Composing Dependency Management"

Andrew Rubinger do-not-reply at jboss.com
Thu Mar 11 10:15:24 EST 2010


User development,

A new message was posted in the thread "BOMs Away - Composing Dependency Management":

http://community.jboss.org/message/531414#531414

Author  : Andrew Rubinger
Profile : http://community.jboss.org/people/ALRubinger

Message:
--------------------------------------------------------------
Last week I had the opportunity to hang with Paul Gier, members of the product team, and some Maven thought leaders to discuss best practices for the EJB3 and Application Server builds.
 
Some history: we initially wanted to introduce the AS "component matrix" as an independent listing of all thirdparty dependencies to be used in the runtime.  My hope was that this could be relied upon by external projects to ensure we'd run unit tests against the correct component versions.  Unfortunately, to be consumable by both AS and external projects means that component-matrix would have to live outside of AS, leading to one of two unhappy scenarios:
 
1) We release this thing N times a day and update AS accordingly
2) AS would depend upon a SNAPSHOT (absolutely not)
 
After Maven 2.0.9 the "import" dependency scope was introduced, which is essentially a hack allowing us to *compose* dependencyManagement information from many POMs.  Using this allows us to remove component-matrix as a parent, and instead we can now split out subsystems' versioning information to be defined by the subsystems themselves.  This approach is called a "Bill of Materials" (BOM).
 
Currently we define our dependency chain via the "ejb3" and "as-int" modules, but really we need branches (one per runtime target) to define the pieces which make up our subsystem.
 
So for EJB3, I propose:
 
org.jboss.ejb3.bom:jboss-ejb3-bom
 
...with *branches* for each runtime target.  In effect this would be the only place we branch, as the components themselves are always cut from trunk.
 
Then we can remove org.jboss.ejb3 stuff from component-matrix in AS and let them import our BOM.  Similarly, our own components can bring in this metadata safely (as it'll be externalized) and either use the depMgt defined or ignore it.  When we want to do integration testing on *upcoming* stuff, we can override the AS build using a command-line property to use a SNAPSHOT of the EJB3 BOM.
 
IMO the way forward for AS is for all subsystems to provide a BOM, and let AS compose them together using import scope.
 
S,
ALR

--------------------------------------------------------------

To reply to this message visit the message page: http://community.jboss.org/message/531414#531414




More information about the jboss-user mailing list