maven安装生命周期不执行验证

时间:2015-07-20 03:26:14

标签: maven maven-3 maven-install-plugin

我必须在构建期间安装自定义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正常工作。

1 个答案:

答案 0 :(得分:2)

这是一个因无法修复而关闭的错误(或不依赖于您的观点): https://issues.apache.org/jira/browse/MNG-5082

以下是该错误的相关评论:

  

所有不属于reactor的依赖项应该在构建启动时可用,这是生成有效buildPlan所必需的。因此,即使这曾经与Maven2一起使用,我认为Maven3的方法更好,因为Maven无法检测哪些插件会在启动时影响buildPlan。我想关闭它,因为不会修复。   在验证期间执行安装文件意味着它将在每次构建期间执行,一遍又一遍地安装相同的文件。这也表明这种方法无效。

您可以尝试将项目转变为多模块项目。第一个模块只包含maven-install-plugin配置 - 所以该模块所做的就是将两个自定义jar上传到本地存储库。然后,您的第二个模块将依赖于第一个模块。当第二个模块构建时,第一个模块将上传自定义jar,这意味着它们应该可用。