我试图理解maven目标执行顺序。
所以我有一个pom附加maven-antrun-plugin
运行
目标到清洁
阶段的maven生命周期构建。
当运行mvn清洁
我得到的输出如输出部分所示:
现在我的问题是:
1为什么maven-Clean-plugin: 2.4.1:清洁(默认清洁)
执行的目标,因为我已经附加了哪个目标运行那么我的目标是否被添加到maven的默认目标列表中,或者它可以被覆盖?maven如何决定执行哪个目标?
2在插件部分,我只有artifactId
和version
,但没有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>
要回答第二个问题:
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个阶段,包括,,,,,,,,,,,,,,,,,,,和。 但是当我看到内置的生命周期绑定时,我发现没有插件目标绑定到诸如验证、初始化、验证等阶段。 或者这些阶段的插件目标是固定的,我们无法控制它们,所以没有必要将它们写在文档中。每次这些阶段,如,,等,都会自动执行。