2

根据文档,maven-invoker-plugin 是“线程安全的并且支持并行构建”。但是,当我使用 构建多模块项目时-T 1C,出现如下错误:

[错误] 无法执行目标 org.apache.maven.plugins:maven-invoker-plugin:1.10:install (integration-test) on project my-archetype: 无法安装项目依赖项: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/target/classes -> [帮助 1]

项目布局是这样的:

Root
|--Project 1
|--Project 2
|--Archetype (depends on Project 1, scope=test)

原型集成测试使用 maven-invoker-plugin 将相关依赖项(根和项目 1)安装到本地存储库,然后运行正常的原型集成测试。在并行构建中,Archetype 和 Project 2 同时运行。当 maven-invoker-plugin 运行时,它会尝试将 Project 2 安装到本地 repo,但 Project 2 尚未构建,因此出现错误。

但是由于测试甚至不需要 Project 2,我应该能够通过仅显式安装所需的依赖项来解决该问题。我不知道如何让调用程序插件做到这一点,但是我可以使用另一个插件吗?

我在这里报告了 maven-invoker-plugin 错误。我有一个示例项目来演示这里的错误。

4

1 回答 1

0

除了快速构建配置中建议的设置的其他问题(例如在每次运行中被调用的项目下载一些工件)之外,我也遇到了这个问题,并实现了我自己的解决方案。而不是调用者:安装目标,您将使用以下内容:

<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 的补丁。更多信息在这里

于 2017-12-24T17:25:27.527 回答