Maven POM file for installing multiple 3rd party commercial libraries

后端 未结 3 1778
星月不相逢
星月不相逢 2021-01-31 19:19

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

相关标签:
3条回答
  • 2021-01-31 19:46

    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)

    0 讨论(0)
  • 2021-01-31 20:00

    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.

    0 讨论(0)
  • 2021-01-31 20:10

    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.

    0 讨论(0)
提交回复
热议问题