Posted by edburns
on September 2, 2011 at 2:43 PM PDT
This blog entry brings to your
attention a few points about using these artifacts, as well as
introducing a simple archetype that the Mojarra team uses to facilitate
the creation of automated regression tests.
JCP/JavaEE Artifacts in Maven Central
As mentioned in the Editor’s Blog , java.net artifacts are finally available in Maven Central. This includes the official JCP/JavaEE artifacts, being published by the official steward of Java technology. This blog entry brings to your attention a few points about using these artifacts, as well as introducing a simple archetype that the Mojarra team uses to facilitate the creation of automated regression tests.
I am not at all in the position to comment on maven best practices, but one problem I’ve run into is the effect of bitrot on a maven build. This can sometimes result in a complicated assortment of repository entries leading to the lack of a clear understanding of how your dependencies are being satisfied. Now that the official JavaEE artifacts are all in maven central, you can omit the repository declaration entirely from your projects, relying on a mirror declaration in your settings.xml file, if necessary. If you are developing a Java EE 6 application, all of the compile time dependencies can be satisfied from a single artifact, in maven central.
It is important to note that this dependency was declared with
<scope>provided</scope> This is the only way you can use this dependency because the jar has been stripped of all java code and contains only signatures. The actual implementation of JavaEE 6 comes, naturally, from your Java EE 6 compliant container .
If you would rather go à la carte, the individual artifacts for all of the JavaEE technologies are also available, as listed in these tables. The first table lists artifacts that conform to the naming scheme Oracle Architect, and JavaEE Titan, Bill Shannon. The scheme is documented at <http://wikis.sun.com/display/GlassFish/Maven+Versioning+Rules >.
JSR-299 Contexts and Dependency Injection for JavaEE
JSR 314 JavaServer Faces
JSR 330 Dependency Injection for Java
JSR 316 Java EE 6
JSR 919 Java Mail
JSR 315 Java Servlet
JSR 245 Java Servlet
The remaining jars do not conform to the naming scheme, but are useful for compilation nonetheless.
JSR 925 JavaBeans Activation Framework
JSR 250 Standard JavaEE Annotations
JSR 107 JCache
JSR 188 Delivery Context
(pre JCP JSR) Java Communications API
JSR 220 Enterprise Java Beans
JSR 341 Expression Language
JSR 52 JSP Standard Tag Library
JSR 97 JavaHelp
JSR 208 Java Besiness Integration
JSR 283 Java Content Repository API
JSR 243 Java Data Objects 2
JSR 914 Java Messaging Service
JSR 181 Web Services Metadata for Java
JSR 77 Java Management API
JSR 317 Java Persistence
JSR 286 Java Portlet
JSR 322 Java EE Connector
JSR 32: JAIN SIP API Specification
JSR 115 Java Authorization Contract for Containers API
JSR 240 JAIN SLEE
JSR 907 Java Transaction API
JSR 303 Bean Validation
JSR 311 Java API for RESTful Web Services
JSR 222 Java Architecture for XML Binding
JSR 105 XML Digital Signature APIs
JSR 206 Java API for XML Processing
JSR 93 Java API for XML Registries
JSR 101 XML RPC
XML Web Services
JSR 173 Streaming API for XML
JSR 67 XML Messaging
JSR 196 Java Authentication Service
Provider Interface for Containers
JSR 224 XML-Based Web Services
If you want to use JSF 2.1, which was released after JavaEE 6, it is necessary to explicitly place a compile time dependency on that artifact before the javaee-api 6.0 dependency.
Oracle GlassFish Server 3.1.1 <http://glassfish.org/ > contains an implementation of JSF 2.1.
Archetypes That Use The Artifacts
Because we now have these artifacts in maven central, it is possible for us to finally add archetypes that use them. This first archetype creates a simple war project that depends on JSF 2.1 and JavaEE 6.
mvn archetype:generate -DarchetypeGroupId=javax.faces -DarchetypeArtifactId=javax.faces-war-archetype -DarchetypeVersion=2.1
A subsequent post will document the use of another artifact, for the very latest JSF version, 2.2-SNAPSHOT.
This blog entry signifies the culmination of the effort of many individuals from many disciplines over the ears. I would like to thank them all for finally allowing official Java jars to flow into Maven Central.
Technorati Tags: edburns