How do I add a transitive dependency to my project's classpath?
Author: Deron Eriksson
Description: This tutorial describes how to use the eclipse:eclipse goal to add a transitive dependency to a project classpath.
Tutorial created using:
Windows Vista || JDK 1.6.0_04 || Eclipse Web Tools Platform 2.0.1 (Eclipse 3.3.1)
(Continued from page 1) Next, I'll perform a 'mvn eclipse:eclipse' goal on the 'mytest2' project. This will update the .classpath file of "mytest2" so that it is updated to contain a reference to the "mytest" jarW file. However, since the "mytest" pom.xml file also contains a reference to commons-lang, the commons-lang jar file specified in the pom.xml file of "mytest" will be reflected in the .classpath file of "mytest2". The console output of 'mvn eclipse:eclipse' on the 'mytest2' project is shown here. Console output of 'mvn eclipse:eclipse' on 'mytest2' project[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'eclipse'. [INFO] ------------------------------------------------------------------------ [INFO] Building mytest2 [INFO] task-segment: [eclipse:eclipse] [INFO] ------------------------------------------------------------------------ [INFO] Preparing eclipse:eclipse [INFO] No goals needed for project - skipping [INFO] [eclipse:eclipse] [INFO] Using source status cache: C:\dev\workspace\mytest2\target\mvn-eclipse-cache.properties [INFO] Not writing settings - defaults suffice [INFO] File C:\dev\workspace\mytest2\.project already exists. Additional settings will be preserved, run mvn eclipse:clean if you want old settings to be removed. [INFO] Wrote Eclipse project for "mytest2" to C:\dev\workspace\mytest2. [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Mon Feb 11 21:41:09 PST 2008 [INFO] Final Memory: 4M/7M [INFO] ------------------------------------------------------------------------ Let's inspect the .classpath file of the 'mytest2' project. As you can see, it contains a reference to the mytest-1.0-SNAPSHOT.jar file in the local mavenSW repository. In addition, it also has a reference to the commons-lang-2.3.jar file in the local maven repository, since this is a transitive dependency that 'mytest2' knows about from the pom.xml file of 'mytest'. Neato! .classpath file of 'mytest2' project after 'mvn eclipse:eclipse'<classpath> <classpathentry kind="src" path="src/main/java"/> <classpathentry kind="src" path="src/test/java" output="target/test-classes"/> <classpathentry kind="output" path="target/classes"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="var" path="M2_REPO/com/maventest/mytest/1.0-SNAPSHOT/mytest-1.0-SNAPSHOT.jar"/> <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/> <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/> </classpath> Transitive dependencies are an extremely powerful feature of maven that can help alleviate some of the pain involved in trying to manage jar file dependencies across multiple projects. Related Tutorials:
|