views:

239

answers:

4

I have a maven project that has a set of library dependancies that are not available via any maven repository. How can I add those libraries to the pom? I want to do this so when I run 'mvn eclipse:eclipse' it doesnt remove those libraries from the eclipse classpath.

A: 

You can't 'add them to the pom'. You have to put them in some repo. You can put them in the local repo with the maven-install-plugin, as suggested by the error message. Or you can deploy them in a local copy of Nexus or something like it.

bmargulies
+1  A: 

You can declare it as a dependency with system scope.

<project>
...
 <dependencies>
   <dependency>
     <groupId>sun.jdk</groupId>
     <artifactId>tools</artifactId>
     <version>1.5.0</version>
     <scope>system</scope>
     <systemPath>${java.home}/../lib/tools.jar</systemPath>
   </dependency>
 </dependencies>
 ...
</project>
YuppieNetworking
Not recommended at all! This is a hack, system scope is not intended for this use and this as drawbacks/side effects.
Pascal Thivent
I do not agree with you. The question does not specify anything about the intended use. He needs to add it so that eclipse does not remove it from the classpath.
YuppieNetworking
For any serious project that may later use things like the assembly plugin, you don't want to use system scope. This is just a bad practice, I do not recommend it.
Pascal Thivent
+1  A: 

You have 3 options:

  • Add your libraries to your local repository via install:install-file (obviously, this is not portable, you won't be able to build the project on another machine without doing the same).
  • Install and run an "enterprise repository" like Nexus, Archiva, or Artifactory and add your libraries via deploy:deploy-file.
  • Setup a file based repository as described in this previous answer and put your libraries in there.

Then, declare your libraries in your pom like any other dependency.

Pascal Thivent
+1  A: 

You can include them with your project in a sub-directory (perhaps lib/). You can also provide .bat and/or .sh files containing all the appropriate calls to the maven-install-plugin necessary for each project member (or server env) to add these jars to the local repo.

This approach allows new project members to get up & running quickly, without having to invest several hours in setting up a new public repo for your project or team.

Drew Wills