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]
