On 11/18/2011 12:54 PM, Adam Young wrote:
I first ran the maven Archtype for a Jersey web app and then compiled it. Both before starting and In between the two steps I wiped out my local Maven repository to be able to distinguish waht was necessary.
Here are the list of jars pulled down in the second stage.
javax/ws/rs/jsr311-api/0.8/jsr311-api-0.8.jar junit/junit/3.8.1/junit-3.8.1.jar commons-cli/commons-cli/1.0/commons-cli-1.0.jar org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar org/codehaus/mojo/tomcat-maven-plugin/1.1/tomcat-maven-plugin-1.1.jar org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.jar
org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.jar
org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.jar
org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
org/apache/maven/shared/maven-filtering/1.0-beta-4/maven-filtering-1.0-beta-4.jar
org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar
org/apache/maven/plugins/maven-resources-plugin/2.4.3/maven-resources-plugin-2.4.3.jar
org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
asm/asm/3.1/asm-3.1.jar com/sun/jersey/jersey/0.8-ea-SNAPSHOT/jersey-0.8-ea-SNAPSHOT.jar
I'm guessing these fall into two groups: those needed for building any web app and those specific to Jersey. Maven is fairly well covered by Fedora, so I don't think w'll have too much trouble there. JUnit is in Fedora. commons-cli is in fedora
jsr311 is probably just a small set of source file, but it is not in Fedora.
Specific to Jersey are these: edited out of the Jersey POM
javax.ws.rs.jsr311-api version 0.8 javax.annotation.jsr250-api version 1.0 javax.persistence.persistence-api version 1.0.2 javax.servlet.servlet-api version 2.5 asm.asm version 3.1
NOte that does not indicated what is needed to build Jersey, merely what it requires to build another project.
Pulling the Jersey source into Eclipse without and jars to fill in dependencies is more interesting.
To build, it refers to a bunch of the Sun classes in the JREs rt.jar, which have access prohibited. we can work around this with a symlink.
Other jars I started pulling in
<classpathentry kind="lib" path="/usr/share/java/javamail/mail.jar"/> <classpathentry kind="lib" path="/usr/share/java/geronimo-annotation.jar"/> <classpathentry kind="lib" path="/usr/share/java/objectweb-asm/asm.jar"/> <classpathentry kind="lib" path="/usr/share/java/felix/org.osgi.core.jar"/> <classpathentry kind="lib" path="rt.jar"/> <classpathentry kind="lib" path="/usr/share/java/ant.jar"/> <classpathentry kind="lib" path="/usr/share/java/jsp.jar"/> <classpathentry kind="lib" path="/usr/share/java/tomcat6/annotations-api.jar"/> <classpathentry kind="lib" path="/usr/share/java/geronimo-ejb.jar"/> <classpathentry kind="lib" path="/usr/share/java/atinject.jar"/> <classpathentry kind="lib" path="/usr/share/java/geronimo-jpa.jar"/> <classpathentry kind="lib" path="/usr/share/java/tomcat-servlet-3.0-api.jar"/> <classpathentry kind="lib" path="/usr/share/java/geronimo-interceptor.jar"/>
The only one I haven't found so far is <classpathentry kind="lib" path="/home/ayoung/.m2/repository/javax/enterprise/cdi-api/1.1.EDR1.1/cdi-api-1.1.EDR1.1.jar"/>
Which appears to be Weld, or the reference implementation of JSR-299. This looks interesting in its own right.
A little more digging on weld. I pulled in the cdi-api Source files into the same project. I can get the whole thing to compile if I add in <classpathentry kind="lib" path="/usr/share/java/elspec.jar"/> With the exception of javax.enterprise.inject.spi.BeforeBeanDiscovery which has an import that it doesn't use: javax.interceptor.InterceptorBinding; If I comment out that line, it builds. We should be able to make this work in Fedora. 2 new packages (Jersey and cdi-api) are not that bad a payback for the amount of reuse we will get.