根据the docs,maven-invoker-plugin是“线程安全的,支持并行构建”。但是,当我使用-T 1C
进行多模块项目构建时,出现如下错误:
[错误]无法在项目my-archetype上执行目标org.apache.maven.plugins:maven-invoker-plugin:1.10:install(integration-test):无法安装项目依赖项:MavenProject:com.tavianator: my-archetype:1.6-SNAPSHOT @ /home/tavianator/code/Project/my-archetype/pom.xml:无法安装项目工件:MavenProject:com.tavianator:my-project:1.6-SNAPSHOT @ / home / tavianator / code / Project / my-project / pom.xml:无法安装工件:com.tavianator:my-project:jar:1.6-SNAPSHOT:工件未完全组装:/ home / tavianator / code / Project / my-project /目标/类 - > [帮助1]
项目布局如下:
Root
|--Project 1
|--Project 2
|--Archetype (depends on Project 1, scope=test)
原型集成测试使用maven-invoker-plugin将相关的依赖项(Root和Project 1)安装到本地存储库,然后运行正常的原型集成测试。在并行构建中,Archetype和Project 2同时运行。当maven-invoker-plugin运行时,它会尝试将Project 2安装到本地仓库,但Project 2尚未构建,因此出错。
但是由于测试甚至不需要Project 2,我应该能够通过显式安装所需的依赖项来解决问题。我不知道如何让invoker插件做到这一点,但是我可以使用另一个插件吗?
答案 0 :(得分:0)
我遇到了这个问题,除了Fast Build Configuration中建议的设置的其他问题(例如每次运行中被调用项目下载的一些工件),并实现了我自己的解决方案。而不是调用者:安装目标,您将使用以下内容:
<plugin>
<groupId>com.github.veithen.invoker</groupId>
<artifactId>resolver-proxy-maven-plugin</artifactId>
<version>0.1</version>
<executions>
<execution>
<goals>
<goal>start</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
请注意,无需显式配置settings.xml
或专用本地存储库。这是自动完成的。
目前插件中的代码是实验性的。如果它足够强大,我将提交一个补丁,将其集成到maven-invoker-plugin中。更多信息here。