Maven POM file for installing multiple 3rd party commercial libraries

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.


Just to add to the correct example provided by @eugene-kuleshov:

  1. 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.

  2. 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.