maven插件目标如何映射到maven阶段?

时间:2015-02-22 16:08:41

标签: java maven

我最近正在研究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,是否意味着我将在配置文件测试下运行阶段测试?

1 个答案:

答案 0 :(得分:1)

其中很大一部分在Introduction to the Build Lifecycle中说明。

包目标既可以mvn release:perform显式运行(perform调用maven-release-plugin},也可以绑定某些阶段< / em>的。 Maven插件通常会预先设定一些目标。您可以在pom.xml中定义自己的绑定,甚至可以使用配置文件指定几个不同的绑定。在您的示例中,当且仅当执行配置文件maven-antrun-plugin:run时,才将test绑定到阶段test