Maven 生命周期及插件配置
Maven 使用标准的生命周期模型,包含 default
、clean
和 site
三个生命周期。 每个生命周期包含一系列有序的阶段 (Phase)。
阶段 (Phase)
执行 Maven 命令时,例如 mvn compile
,Maven 会依次执行从 validate
到 compile
阶段的所有命令。 完整的阶段列表可参考 Maven 文档。
目标 (Goal)
Maven 插件的目标 (Goal) 定义了具体的执行任务,并绑定到特定的阶段。例如,maven-compiler-plugin
插件的 compile
目标绑定到 compile
阶段。 同一阶段中,插件目标的执行顺序由 pom.xml
文件中 <plugins>
部分的条目顺序决定。
要查看绑定到特定阶段 (例如 package
阶段) 的插件目标,可以使用以下命令:
<code class="language-bash">mvn help:describe -Dcmd=package</code>
查看插件目标和阶段 (源码)
要了解插件目标和阶段的绑定关系,可以查看插件的源代码。 例如,frontend-maven-plugin
插件的 install-node-and-npm
和 npm
目标的配置如下:
<code class="language-xml"><plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.15.1</version> <executions> <execution> <id>install-node-and-npm</id> <goals> <goal>install-node-and-npm</goal> </goals> </execution> <execution> <id>npm install</id> <goals> <goal>npm</goal> </goals> </execution> ... </executions> </plugin></code>
对应的 Java 代码片段:
<code class="language-java">@Mojo(name="install-node-and-npm", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true) public final class InstallNodeAndNpmMojo extends AbstractFrontendMojo { // ... } @Mojo(name="npm", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true) public final class NpmMojo extends AbstractFrontendMojo { // ... }</code>
可以看到,这两个目标都绑定到 GENERATE_RESOURCES
阶段。
Profile (配置文件)
Profile 用于:
设置默认 Profile
可以通过在 pom.xml
中配置 activeByDefault
属性来设置默认的 Profile:
<code class="language-xml"><profiles> <profile> <activation> <property> <name>debug</name> </property> </activation> ... </profile> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile> </profiles></code>
覆盖已启用的 Profile
假设 dev
Profile 默认启用,要启用 production
Profile 并禁用 dev
Profile,可以使用以下命令:
<code class="language-bash">mvn -P=-dev,production</code>
以上是Maven Notes(1)的详细内容。更多信息请关注PHP中文网其他相关文章!