并行构建中的maven-invoker-plugin“神器未完全组装”错误

时间:2015-06-05 15:37:43

标签: maven maven-archetype maven-invoker-plugin

根据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插件做到这一点,但是我可以使用另一个插件吗?

我报告了maven-invoker-plugin bug here。我有一个演示错误here的示例项目。

1 个答案:

答案 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