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中文網其他相關文章!