Maven插件作为多模块项目中的依赖项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven插件作为多模块项目中的依赖项相关的知识,希望对你有一定的参考价值。
我遇到a multi-module project的问题,其中一个模块是基于注释的maven-plugin:https://github.com/fommil/netlib-java/
基本上,mvn compile
第一次失败,然后当我做第二次mvn compile
时成功。
如果我这样做,它也可以正常工作
mvn -pl generator compile
mvn compile
我希望构建能够一次成功,这样我就可以构建和发布所有模块。
我快速浏览了一下你的项目并发现,“generator”插件是multimodule项目的一部分,它在这个项目中被使用(具有相同的版本)。这不是合法用途!您必须从反应堆外部提供所有必需的插件!
原因是,maven试图填充反应堆并事先确定所有必需的插件。然后它开始构建。如果生成器插件是项目的一部分,Maven无法执行此操作。
Stephen Connolly在博客文章中写到:Maven and the "Install" Hack。
心连心, - 马丁
(我将此作为答案,因为它不适合评论区域)
好吧,我从Github下载了11fe0f5版本,并在父/根文件夹上尝试了mvn clean install,看看会发生什么,我收到了这个错误:
[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.444s [INFO] Finished at: Mon Jun 24 20:00:30 BRT 2013 [INFO] Final Memory: 20M/350M [INFO] ------------------------------------------------------------------------ [ERROR] Could not find goal 'interface' in plugin org.netlib:generator:1.0-SNAPSHOT among available goals -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoNotFoundException
这让我质疑接口目标是否真的存在于生成器插件中,以及是否正在生成目标描述符。所以看一下生成器模块pom.xml我找不到任何maven-plugin配置来生成插件模块,所以我将你的maven-plugin-plugin配置更改为:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.2</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<phase>process-classes</phase>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
并且它将接口目标添加到生成器插件中,我现在能够从根文件夹安装就好了。
mvn clean install部分输出:
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ netlib --- [INFO] Building jar: C:ebook etlib-java-11fe0f502496276be5536003eaacbde363317c b1 etlib arget etlib-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ netlib --- [INFO] Installing C:ebook etlib-java-11fe0f502496276be5536003eaacbde363317cb1 netlib arget etlib-1.0-SNAPSHOT.jar to C:Usersoltra01.m2 epositoryorg et lib etlib1.0-SNAPSHOT etlib-1.0-SNAPSHOT.jar [INFO] Installing C:ebook etlib-java-11fe0f502496276be5536003eaacbde363317cb1 netlibpom.xml to C:Usersoltra01.m2 epositoryorg etlib etlib1.0-SNAPSHOT etlib-1.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] parent ............................................ SUCCESS [0.478s] [INFO] generator ......................................... SUCCESS [6.172s] [INFO] netlib ............................................ SUCCESS [1:05.310s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1:12.105s [INFO] Finished at: Mon Jun 24 19:55:08 BRT 2013 [INFO] Final Memory: 27M/491M [INFO] ------------------------------------------------------------------------
您使用什么maven命令/目标来解决问题中的错误?您是否尝试删除整个存储库? (也许你已经安装了一个混乱的发电机版本)
以上是关于Maven插件作为多模块项目中的依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Intellij IDEA Maven 插件 - 管理依赖项
在多模块 maven 项目中的模块之间共享 src/test 类
多模块本地 jar 依赖项 - Jenkins Pipeline