0

我必须在构建期间安装自定义 jar,我没有选择运行部署文件将自定义 jar 上传到中央连接。

自定义 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 文档说明了作为执行周期的一部分执行特定之前的所有阶段,但有些它对我不起作用。

甚至,这篇文章也说了同样的话,您需要validate显式运行以确保 maveninstall工作正常。

4

1 回答 1

3

这是一个错误(或不依赖于您的视图)已被关闭为不会修复https ://issues.apache.org/jira/browse/MNG-5082

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

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

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

于 2015-07-20T07:38:52.630 回答