我最近正在研究maven项目,但我真的不明白它是如何在内部工作的,来自蚂蚁背景。
以下是我试图谷歌但无法获得满意的基本问题。
1)当我运行mvn clean install或mvn clean包时。安装或打包目标是否在pom和父pom中定义的内部逐个运行所有插件 或者要运行一个插件,我们需要执行mvn
2)插件的所有目标都会被执行吗?
3)目标,阶段和任务如何相互关联?考虑以下示例
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<profiles>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Using env.test.properties</echo>
<copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}/env.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
如果我运行mvn test -Ptest,是否意味着我将在配置文件测试下运行阶段测试?
答案 0 :(得分:1)
其中很大一部分在Introduction to the Build Lifecycle中说明。
包目标既可以mvn release:perform
显式运行(perform
调用maven-release-plugin
},也可以绑定某些阶段< / em>的。 Maven插件通常会预先设定一些目标。您可以在pom.xml
中定义自己的绑定,甚至可以使用配置文件指定几个不同的绑定。在您的示例中,当且仅当执行配置文件maven-antrun-plugin:run
时,才将test
绑定到阶段test
。