2015-07-20 36 views
0

我必须在编译期间安装一个自定义jar,我没有选择运行部署文件来将自定义jar上传到中央连接。maven安装生命周期不会执行验证

自定义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,这些自定义的罐子得到本地安装的很好,但我想运行安装,插件在安装时,我改变阶段安装和它失败,错误

[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 

我运行前必须明确运行validateinstall,我想解决这个问题。 Maven文档说,在特定的某个阶段之前的所有阶段都是作为执行周期的一部分执行的,但有些如何不适合我。

即使这个article说的是同样的事情,您需要明确运行validate以确保maven install正常工作。

+0

选中此项:https://github.com/stephenc/non-maven-jar-maven-plugin除此之外,更好的做法是将这些工件上传到资源库管理器。 – khmarbaise

回答

1

这是已被封闭,不会解决错误(或不取决于依赖你的看法): https://issues.apache.org/jira/browse/MNG-5082

这里是从错误的相关评论:

所有不属于反应堆的依赖关系应该在构建启动时可用,这是构建有效的buildPlan所必需的。所以,即使这用于Maven2,我认为Maven3的方法更好,因为Maven在启动时无法检测到哪些插件会影响buildPlan。我想关闭它,因为不会修复。 在验证过程中执行安装文件意味着它将在每个构建过程中执行,并一遍又一遍地安装相同的文件。这也表明这种方法不能有效。

你可以尝试的是将你的项目变成一个多模块项目。第一个模块只包含maven-install-plugin配置 - 因此所有模块都会将两个自定义jar上传到本地存储库。你的第二个模块将取决于这个第一个模块。当第二个模块建立时,第一个模块将上传自定义jar,意思是他们应该可用。

相关问题