【问题标题】:jacoco-maven-plugin causes site plugin to fail in multimodule projectjacoco-maven-plugin 导致站点插件在多模块项目中失败
【发布时间】:2014-05-29 06:45:08
【问题描述】:

上次我决定在我的 Maven 构建的 Java 项目中将 Cobertura 插件替换为 JaCoCo 插件。

其中一个是具有模块间依赖关系的多模块项目:

*-- pl.chilldev.commons
    |-- commons-concurrent
    |-- commons-daemon
    `-- commons-exception

问题是commons-daemon 依赖于commons-exception

我有jacoco-maven-plugin 配置如下:

        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.1.201405082137</version>
            <executions>
                <execution>
                    <id>jacoco-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-report</id>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

一切正常,测试运行,但 site 目标失败:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:site (default-site) on project commons: failed to get report for org.apache.maven.plugins:maven-javadoc-plugin: Failed to execute goal on project commons-daemon: Could not resolve dependencies for project pl.chilldev.commons:commons-daemon:jar:0.0.3-SNAPSHOT: Could not find artifact pl.chilldev.commons:commons-exception:jar:0.0.3-SNAPSHOT -> [Help 1]

如果没有jacoco-maven-plugin,即使site 目标也一切正常。

【问题讨论】:

  • 你是在运行mvn install 还是mvn package
  • 我写得很清楚,它适用于目标site

标签: java maven jacoco


【解决方案1】:

设法使其工作。问题是,默认情况下prepare-agent 目标绑定到initialize 阶段,这意味着一切都将使用 JaCoCo java 代理执行,这可能无法在 Maven 计算之前解析类路径(我只是假设,我不知道内部)。

添加:

        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.1.201405082137</version>
            <executions>
                <execution>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

修复它。

顺便说一句 - 也不需要将 report 目标添加到执行列表中,我认为将其添加到报告插件中更正确。

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2015-12-25
    • 2016-10-30
    • 1970-01-01
    • 2017-01-30
    相关资源
    最近更新 更多