Maven POM file for installing multiple 3rd party commercial libraries

倾然丶 夕夏残阳落幕 提交于 2019-12-20 09:00:00

问题


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 own local repo.

Running mvn install:installFile -Dpackaging=jar -Dfile=<file> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> for each file is rather tedious. Could create a bat file, but is there a way to do this using maven?

I'm thinking a project for all the jars and a single pom file with all the group ids, artifact ids, versions and filenames and then the possibility of just running mvn install in that project, or something along those lines.

Is anything like this possible?


Note: I'm using Maven 3, but a Maven 2 compatible solution would be nice too.


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/13237022/maven-pom-file-for-installing-multiple-3rd-party-commercial-libraries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!