Add 3rd Jars to Maven2 Build Path without Installing Them
Sometimes, we want to add a 3rd jar to our project, but it is not included in public maven repository, and we don't want to bother to create a local or intranet repository, and install the jar into it.
For example, we want to add javaparser to our application, it is a library to parse java source, and extract methods, fields, javadoc, and comments.
We can define its scope as system, and specify its path.
<dependency>
<groupId>japa.parser</groupId>
<artifactId>javaparser</artifactId>
<version>1.0.8</version>
<scope>system</scope>
<systemPath>${basedir}/lib/javaparser-1.08.jar</systemPath>
</dependency>
Where ${basedir} is pointing to your project's root.
But this has some limitations, for example, when use maven assembly plugin to generate assemblies, jars under scope "system" are not included.
The solution is to put the dependency in a "file system repository" local to the project, then use install-file to install the jar to local default repository first (~/.m2/repository), then move the directory tree to ${basedir}/my-repo.
mvn install:install-file -Dfile=%LIBPATH%\javaparser1.0.8.jar -DgroupId=japa.parser -DartifactId=javaparser -Dversion=1.0.8 -Dpackaging=jar -DgeneratePom=true
I would declare that repository in my pom.xml like this:
<repositories>
<repository>
<id>my</id>
<url>file://${basedir}/my-repo</url>
</repository>
</repositories>
<dependency>
<groupId>japa.parser</groupId>
<artifactId>javaparser</artifactId>
<version>1.0.8</version>
<scope>compile</scope>
</dependency>
Resources:
Maven 2 assembly with dependencies: jar under scope “system” not included.
Can I add jars to maven 2 build classpath without installing them?
http://code.google.com/p/javaparser/
http://retrotranslator.sourceforge.net/