java - jacoco-maven-plugin 导致站点插件在多模块项目中失败

标签 java maven jacoco

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

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

*-- 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目标,一切也能正常工作。

最佳答案

设法让它发挥作用。问题是,默认情况下 prepare-agent 目标绑定(bind)到 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 目标添加到执行列表中,我认为将其添加到报告插件中更正确。

关于java - jacoco-maven-plugin 导致站点插件在多模块项目中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23927329/

相关文章:

java - 使用注释将单个实体映射到 Hibernate 中相同架构的多个表

java - 在带有名称的 DispatcherServlet 中未找到带有 URI 的 HTTP 请求的映射...

带有来自命令行的覆盖率报告的 Android 本地单元测试

Git for Windows(64 位)中的 Maven classworlds.launcher.Launcher 错误

java - Spring Boot项目构建成功并报错

通过命令行使用 Junit 和 Jacoco,java 覆盖率为 0%

java - 我可以从 Eclemma 代码覆盖工具 Java 中排除自动生成的代码吗?

java - 不在android studio中显示styles.xml

Java Watchable 永远检查事件

java - 如何在Java中快速读取大型JSON文件到ArrayLists