I have a bunch of projects which are dependant on a set of commercial 3rd party libraries. We currently don\'t have a company repository so I have to install the libraries in my
Just to add to the correct example provided by @eugene-kuleshov:
Once you configure the maven-install-plugin
with the goal install-file
in your pom.xml
file with multiple executions, one execution per external jar, you have to use these jars in your pom.xml
as usual:
<dependency>
<groupId>org.some.group</groupId>
<artifactId>your-artifact</artifactId>
<version>1.0</version>
</dependency>
The maven-install-plugin
only copies your external jars to your local .m2
maven repository. That's it. It doesn't automatically include these jars as maven dependencies to your project.
It's a minor point, but sometimes easy to miss.
You do not need to include any <repositories>
in your pom
as long as you are installing the external jars to the .m2
repository (which is the default)
You can just create pom.xml with multiple executions of install-file goal of Maven install plugin. Assuming those files are already available locally somewhere (or you can download them using Wagon plugin).
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.somegroup</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version/>
<executions>
<execution>
<id>install1</id>
<phase>package</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>lib/your-artifact-1.0.jar</file>
<groupId>org.some.group</groupId>
<artifactId>your-artifact</artifactId>
<version>1.0</version>
... other properties
</configuration>
</execution>
<execution>
<id>install2</id>
<phase>package</phase>
<goals>
<goal>install-file</goal>
</goals>
... etc
</execution>
... other executions
</executions>
</plugin>
</plugins>
</build>
</project>
So, with above pom fragment mvn package
should do the trick.
There are good Maven POM tutorial and POM reference.
Recently discovered a new solution to this. Basically you can create a local repository within the project which can be checked in with the rest of the source code. Blogged about it here: http://www.geekality.net/?p=2376.
The gist is to deploy dependencies to a folder in your project.
mvn deploy:deploy-file
-Durl=file:///dev/project/repo/
-Dfile=somelib-1.0.jar
-DgroupId=com.example
-DartifactId=somelib
-Dpackaging=jar
-Dversion=1.0
And then simply let Maven know about it and use dependency declarations as normal through your pom.xml
.
<repositories>
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
<dependency>
<groupId>com.example</groupId>
<artifactId>somelib</artifactId>
<version>1.0</version>
</dependency>
Not extremely Maven'y, but it works and moving the dependencies to a company repository later should be quite simple.