如何在maven中安装具有依赖项的本地jar

时间:2016-10-10 12:30:41

标签: maven dependencies

我有一个本地jar(我自己编写的maven插件),我正在安装

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=dependencies/my-maven-plugin-1.0.jar

该插件有一些依赖项(在jar中的pom.xml中定义);

<dependencies>
<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-plugin-api</artifactId>
  <version>2.0</version>
</dependency>
<dependency>
  <groupId>org.apache.maven.plugin-tools</groupId>
  <artifactId>maven-plugin-annotations</artifactId>
  <version>3.2</version>
  <scope>provided</scope>
</dependency>
  <dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.13</version>
  </dependency>
  <dependency>
    <groupId>com.hubspot.jinjava</groupId>
    <artifactId>jinjava</artifactId>
    <version>2.1.0</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
  </dependency>
</dependencies>

但是使用maven-install-plugin,这些都没有安装。在安装jar时,我可以以某种方式自动安装所需的依赖项吗?

1 个答案:

答案 0 :(得分:1)

不,你不能这样做。这是正常的:maven-install-plugin将安装您传递的文件,在这种情况下是my-maven-plugin-1.0.jar,并且就是这样。它还会查看JAR内部以找到要安装的POM,因为如果没有安装POM,安装的工件将无法用作依赖项。

但它并没有这样做,因为它并不需要。下次依赖此工件时,使用POM中写入的坐标,Maven将自动从配置的远程存储库(默认为Maven Central)下载依赖项,并将它们安装在本地存储库中。不需要手动启动install-file目标;这仅在Maven存储库上没有工件时才有用。

如果maven-install-plugin也会安装工件的依赖项来手动安装,那么当你最终依赖于某个项目中的工件时,Maven本身就会做同样的事情。