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.