我必须在构建期间安装自定义jar,我没有选择运行部署文件来将自定义jar上传到中央nexus。
自定义jar,没有任何依赖关系,非常简单 这是我的pom文件。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>install-asjava</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.ibm</groupId>
<artifactId>customjar1</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<file>${basedir}/lib/customjar1.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>install-unijdbc</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.ibm</groupId>
<artifactId>customjar2</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<file>${basedir}/lib/customjar2.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
当我运行maven validate
时,这些自定义jar在本地安装得很好,但我想在安装期间运行install-plugin,我将阶段更改为安装并且失败并显示错误
[WARNING] The POM for com.ibm:customjar1:jar:1.0.0 is missing, no dependency information available
[WARNING] The POM for com.ibm:customjar2:jar:1.0.0 is missing, no dependency information available
我必须在运行validate
之前始终显式运行install
,我想解决这个问题。 Maven文档说特定的所有阶段都是作为执行周期的一部分执行的,但是有些阶段对我来说不起作用。
即使这个article说同样的话,你需要明确地运行validate
以确保maven install
正常工作。
答案 0 :(得分:2)
这是一个因无法修复而关闭的错误(或不依赖于您的观点): https://issues.apache.org/jira/browse/MNG-5082
以下是该错误的相关评论:
所有不属于reactor的依赖项应该在构建启动时可用,这是生成有效buildPlan所必需的。因此,即使这曾经与Maven2一起使用,我认为Maven3的方法更好,因为Maven无法检测哪些插件会在启动时影响buildPlan。我想关闭它,因为不会修复。 在验证期间执行安装文件意味着它将在每次构建期间执行,一遍又一遍地安装相同的文件。这也表明这种方法无效。
您可以尝试将项目转变为多模块项目。第一个模块只包含maven-install-plugin
配置 - 所以该模块所做的就是将两个自定义jar上传到本地存储库。然后,您的第二个模块将依赖于第一个模块。当第二个模块构建时,第一个模块将上传自定义jar,这意味着它们应该可用。