[jboss-dev] jboss-javaee.jar

Dimitris Andreadis dandread at redhat.com
Wed Apr 9 13:39:56 EDT 2008


This has been partially discussed on the forums, but I want to get some wider consensus on 
how to proceed, especially from the various jboss projects that consume/implement javax APIs:
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4139711#4139711

AFAIK, jboss-javaee.jar is supposed to serve as the authoritative javaEE API supported and 
implemented by AS (JavaEE5 in our case). The .jar itself is made up by the individual 
sub-apis listed here (e.g. jms, jacc, etc):
https://svn.jboss.org/repos/jbossas/projects/javaee/

However the way we have structured this is not consumable by individual projects (like WS or 
Hibernate). We tag the whole thing, like 5.0.0.Beta3 or 5.0.0.Beta3Update1, while a project 
may want to use/implement specifically, e.g. JMS 1.1

I think what we need is for the individual sub-apis to be independently versioned and 
tagged. So the JMS API whould have versions 1.0, 1.1 and so on. The jboss project can then 
use specific apis at arbitrary versions, without having duplicates in their own projects.

Then a higher level javaee project can import the set of APIs required to create the 
aggregate JavaEE5 (or JavaEE6 and so on) apis.

A single JIRA project could be used to track all those updates.

One issue to consider is whether the aggregate jar will include the classes of the apis (in 
which case you only need to ship the aggregate jar), or reference the external libraries in 
its MANIFEST.MF.

The other issue is when compiling AS and importing the aggregate jboss-javaee.jar, make sure 
that sub-api libraries that can be imported as transitive dependencies agree with the 
versions chosen at the aggregate level, and if not flag that as an error.

I understand that the only way to do this is by using maven ranges ([ ]) on jboss-javaee.jar.

Any input on this is appreciated.

/D



More information about the jboss-development mailing list