Hi Frank,

Maven help us to manage the dependencies by using the pom.xml which we can 
define the dependency relationship.
The dependency relationship can be used when maven need to setup the class path 
or do the packaging.
Here is some note for "provided" that you can get from the book "Better Builds 
with Maven":

"You should note that you're using a provided scope instead of the default 
compile scope. The reason is that this dependency will already be present in 
the environment (being the J2EE application server) where your EJB will 
execute. You make this clear to Maven by using the provided scope; this 
prevents the EAR module from including the J2EE JAR when it is packaged.Even 
though this dependency is provided at runtime, it still needs to be listed in 
the POM so that the code can be compiled."

And if your module A unit test need the C jar in the runtime, because you had 
set C jar as the provided scope in the other module B, you own A module will 
not take this dependency from module B even your have the dependence from B. So 
you need to add the C jar's dependency as the <scope> test </scope> in the 
module A's pom.xml :). 


Willem.



-----Original Message-----
From: Frank Budinsky [mailto:[EMAIL PROTECTED]
Sent: Fri 1/5/2007 11:08
To: [email protected]
Subject: Maven dependencies question
 
I think I need some help form somebody with a better understanding (than 
me) of how maven dependencies work.

Because the Java sdo/impl project includes an optional stax 
loader/serializer it  includes this in its pom.xml file:

        <!-- dependencies for optional StAX functions -->
        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>1.0.1</version>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

One of the new implementation classes in the the sdo/impl project also 
uses the StAX function itself, internally in its implementation.

Now, in the sdo/tools project, we have a test program that calls the 
implementation class that uses the StAX stuff (indirectly though an SDO 
helper interface). Note that the test program in the sdo/tools project has 
no import or direct use of any StAX interfaces.

However, when we now run mvn in the sdo/tools project, the test program, 
mentioned above, fails with the following error:

        java.lang.NoClassDefFoundError: 
javax/xml/stream/XMLStreamException

I was able to fix the problem by copying the stax dependency from the 
sdo/impl pom.xml file and adding it to the pom.xml in the sdo/tools 
project, but this seems a bit ridiculous, since as I mentioned above, the 
use of stax is really only in the sdo/impl project.

Can anybody see what the problem might be, or suggest how to fix this?

Thanks in advance,
Frank.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to