java - 当 Maven 目标不是阶段/生命周期的一部分时?

标签 java maven

有点厌倦不知道这一点。 “报告”不是 Maven 生命周期。我们如何告诉 Maven 在某个生命周期内运行报告。如果“报告”不是生命周期或阶段,那么 <goal>report</goal> 又是什么?实际上是什么意思?报告什么时候运行?我们如何直接/仅运行它?

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

令人烦恼,当我运行此命令时:

 mvn org.jacoco.jacoco-maven-plugin:report

或者这个:

 mvn jacoco-maven-plugin:report

我收到此错误:

[ERROR] No plugin found for prefix 'org.jacoco.jacoco-maven-plugin' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/home/oleg/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]

当我运行这个时:

mvn clean prepare-package

然后我直接得到一个输出,正如我所希望的:

target/site/jacoco

但我不明白为什么 mvn jacoco-maven-plugin:report命令将失败。

最佳答案

对于理论:

Maven 有目标阶段生命周期

生命周期由一系列阶段组成。每个阶段将执行一些附加目标。目标是将要执行的实际代码。

当你告诉 Maven 执行一个阶段时,它将运行从开始到该阶段的生命周期。当你告诉 Maven 执行一个目标时,它只会运行该目标。目标和阶段可以轻松区分,因为目标名称中包含 :

在第一个代码段中,您将目标report附加到了prepare-package阶段,因此如果您调用mvn prepare-package,它将运行code> 或任何后续阶段 mvn install

如果 POM(或父 POM,或 Maven super POM)中已定义插件,则可以使用 mvn jacoco-maven-plugin:report 在命令行上调用它。否则,您需要采用 mvn groupId:artifactId:version:goal 形式的完全限定名称。

关于java - 当 Maven 目标不是阶段/生命周期的一部分时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54977097/

相关文章:

java - 发布的自动@since javadoc 标签

java - Java声音API。从调音台获取支持的音频格式

java - 部署到 Apache 7.0.54 和 java 8 时,Spring 上下文初始化失败并出现 java.lang.IllegalArgumentException

java - 这些版本的Maven Artifact jersey-grizzly2有什么区别?

java - 使用crawler4j获取html页面中存在的所有iframe、base64代码

java - 如何仅将表中列的特定值加载到组合框

java - 无法将 war 复制到 Google 存储桶

java.lang.VerifyError : Expecting a stackmap frame at branch target JDK 1. 7 目标站点

java - 摆脱 spring-boot-samples 作为父项目

java - 如何在settings.xml中的配置文件中使用maven插件