当前位置: 首页 > 知识库问答 >
问题:

当插件目标附加到maven的生命周期阶段时,目标的执行顺序

许兴文
2023-03-14

我试图理解maven目标执行顺序。

所以我有一个pom附加maven-antrun-plugin运行目标到清洁阶段的maven生命周期构建。

当运行mvn清洁我得到的输出如输出部分所示:
现在我的问题是:
1为什么maven-Clean-plugin: 2.4.1:清洁(默认清洁)执行的目标,因为我已经附加了哪个目标运行那么我的目标是否被添加到maven的默认目标列表中,或者它可以被覆盖?maven如何决定执行哪个目标?

2在插件部分,我只有artifactIdversion,但没有groupId。那么maven是如何找到正确的插件的呢。。groupId不是必需的吗?

输出

 --- maven-clean-plugin:2.4.1:clean (default-clean) @ second_third ---
 Deleting D:\tmp\maven\first_second\target

 --- maven-antrun-plugin:1.1:run (pre-process-classes) @ second_third ---
 Executing tasks
echo] Build Dir: D:\tmp\maven\first_second\target

波姆。xml

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>my.second_third_maven</groupId>
  <artifactId>second_third</artifactId>
  <version>1.1.0</version>
  <build>
  <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.1</version>
          <executions>
            <execution>
              <id>pre-process-classes</id>
              <phase>clean</phase>
              <goals>
                <goal>run</goal>
              </goals>
              <configuration>
              <tasks>
                <echo>Build Dir: ${project.build.directory}</echo>
              </tasks>
              </configuration>
            </execution>
          </executions>
        </plugin>
    </plugins>
  </build>
</project>

共有1个答案

祁建明
2023-03-14

要回答第二个问题:

By default, Maven will search the groupId org.apache.maven.plugins 
for prefix-to-artifactId mappings for the plugins it needs to
perform a given build.

http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html

一节"配置Maven搜索插件"

 类似资料:
  • maven目标和阶段之间的区别/联系是什么? 另一个说: 您不能调用生命周期阶段本身,但可以调用与生命周期阶段绑定的插件的目标。

  • 我正在尝试运行一些Selenium测试,但将jetty的启动附加到maven的预集成测试阶段是行不通的。因此,我试图调查这个问题,似乎总体而言,Maven没有在我指定的阶段执行我的目标。 我找到了这个例子并复制了它。我创建了一个插件,当我显式调用它时,它运行良好。但是当我尝试将其附加到验证阶段并运行mvn验证时,我没有看到“你好!!!”输出它只是向我展示了构建成功,而没有调用howdy world

  • 相对较新的开发人员,尽管我已经使用了一段时间,但我希望能巩固我的Maven基础。我的部分问题是我没有使用Ant的经验,这似乎是许多解释的来源。我一直在阅读和观看教程,我不断听到相同的术语: 生命周期 相位 插件 目标 从我所学到的东西来看,生命周期似乎是最广泛的,由阶段、插件和/或目标组成(或完成)。 问:你能提供一些关于这些术语是如何联系的信息和最常见的例子吗? 越明确越基本越好!

  • 我是maven的新手,学习如何以及何时在插件中执行阶段/目标 假设我的pom中有以下代码片段 现在,如果我执行mvn安装,安装之前的modello的所有阶段(以及每个阶段对应的所有目标)都将执行。正当 但是,如果进行以下修改以引入特定目标,则只会执行一个目标,即java目标(因为它位于安装阶段之前的生成源代码阶段)。对吗?

  • 如果我运行maven命令,那么它将运行之前的所有阶段。是maven构建生命周期的第一个阶段,默认情况下,它不附加到任何maven目标/插件。如果我错了就纠正我 如果它有一个插件/目标附加在它上面,那么这些阶段就可以工作。 由于默认情况下验证阶段没有附加到任何目标上,如果我没有像下面这样特别地钩住任何自定义目标,那么这个阶段会执行吗? 如果它在默认的生命周期中执行(没有定制),那么没有目标的阶段如何

  • 在maven很新。通过阅读maven在官网上的文档,我知道默认生命周期有21个阶段,包括,,,,,,,,,,,,,,,,,,,和。 但是当我看到内置的生命周期绑定时,我发现没有插件目标绑定到诸如验证、初始化、验证等阶段。 或者这些阶段的插件目标是固定的,我们无法控制它们,所以没有必要将它们写在文档中。每次这些阶段,如,,等,都会自动执行。