Lifecycle
default, clean and site
Phase
When executes
mvn compilemvn compilemvn compile
Enter fullscreen mode Exit fullscreen mode
Phase from validate to compile will be gone through.
Full list of phases is here.
Goal
In plugin goals are defined and are binded to phases. For example, the compile goal in maven-compiler-plugin is binded to compile phase.
The order of goal execution of plugins in the same phase is defined by entry order in the plugins section of the pom.xml file.
To list the plugin’s goals is binded to the package phase.
mvn <span>help</span>:describe <span>-Dcmd</span><span>=</span>packagemvn <span>help</span>:describe <span>-Dcmd</span><span>=</span>packagemvn help:describe -Dcmd=package
Enter fullscreen mode Exit fullscreen mode
To check goals and phases from plugin’s source code
To configure frontend-maven-plugin plugin.
<span><plugin></span><span><groupId></span>com.github.eirslett<span></groupId></span><span><artifactId></span>frontend-maven-plugin<span></artifactId></span><span><version></span>1.15.1<span></version></span><span><executions></span><span><execution></span><span><id></span>install-node-and-npm<span></id></span><span><goals></span><span><goal></span>install-node-and-npm<span></goal></span><span></goals></span><span></execution></span><span><execution></span><span><id></span>npm install<span></id></span><span><goals></span><span><goal></span>npm<span></goal></span><span></goals></span><span></execution></span>..<span></executions></span><span></plugin></span><span><plugin></span> <span><groupId></span>com.github.eirslett<span></groupId></span> <span><artifactId></span>frontend-maven-plugin<span></artifactId></span> <span><version></span>1.15.1<span></version></span> <span><executions></span> <span><execution></span> <span><id></span>install-node-and-npm<span></id></span> <span><goals></span> <span><goal></span>install-node-and-npm<span></goal></span> <span></goals></span> <span></execution></span> <span><execution></span> <span><id></span>npm install<span></id></span> <span><goals></span> <span><goal></span>npm<span></goal></span> <span></goals></span> <span></execution></span> .. <span></executions></span> <span></plugin></span><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>
Enter fullscreen mode Exit fullscreen mode
Following is the class of defining install-node-and-npm and npm goal. They are binded to generate-resources phase.
<span>@Mojo</span><span>(</span><span>name</span><span>=</span><span>"install-node-and-npm"</span><span>,</span> <span>defaultPhase</span> <span>=</span> <span>LifecyclePhase</span><span>.</span><span>GENERATE_RESOURCES</span><span>,</span> <span>threadSafe</span> <span>=</span> <span>true</span><span>)</span><span>public</span> <span>final</span> <span>class</span> <span>InstallNodeAndNpmMojo</span> <span>extends</span> <span>AbstractFrontendMojo</span> <span>{</span><span>// ...</span><span>}</span><span>@Mojo</span><span>(</span><span>name</span><span>=</span><span>"npm"</span><span>,</span> <span>defaultPhase</span> <span>=</span> <span>LifecyclePhase</span><span>.</span><span>GENERATE_RESOURCES</span><span>,</span> <span>threadSafe</span> <span>=</span> <span>true</span><span>)</span><span>public</span> <span>final</span> <span>class</span> <span>NpmMojo</span> <span>extends</span> <span>AbstractFrontendMojo</span> <span>{</span><span>// ...</span><span>}</span><span>@Mojo</span><span>(</span><span>name</span><span>=</span><span>"install-node-and-npm"</span><span>,</span> <span>defaultPhase</span> <span>=</span> <span>LifecyclePhase</span><span>.</span><span>GENERATE_RESOURCES</span><span>,</span> <span>threadSafe</span> <span>=</span> <span>true</span><span>)</span> <span>public</span> <span>final</span> <span>class</span> <span>InstallNodeAndNpmMojo</span> <span>extends</span> <span>AbstractFrontendMojo</span> <span>{</span> <span>// ...</span> <span>}</span> <span>@Mojo</span><span>(</span><span>name</span><span>=</span><span>"npm"</span><span>,</span> <span>defaultPhase</span> <span>=</span> <span>LifecyclePhase</span><span>.</span><span>GENERATE_RESOURCES</span><span>,</span> <span>threadSafe</span> <span>=</span> <span>true</span><span>)</span> <span>public</span> <span>final</span> <span>class</span> <span>NpmMojo</span> <span>extends</span> <span>AbstractFrontendMojo</span> <span>{</span> <span>// ...</span> <span>}</span>@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 { // ... }
Enter fullscreen mode Exit fullscreen mode
Profile
- add/override properties
- add dependencies
- add plugin dependencies
- add pluginManagement dependencies
set default profile
<span><!-- (1) ---></span><span><profiles></span><span><profile></span><span><activation></span><span><property></span><span><name></span>debug<span></name></span><span></property></span><span></activation></span>...<span></profile></span><span></profiles></span><span><!-- (2) ---></span><span><profile></span><span><id></span>dev<span></id></span><span><activation></span><span><activeByDefault></span>true<span></activeByDefault></span><span></activation></span>...<span></profile></span><span><!-- (1) ---></span> <span><profiles></span> <span><profile></span> <span><activation></span> <span><property></span> <span><name></span>debug<span></name></span> <span></property></span> <span></activation></span> ... <span></profile></span> <span></profiles></span> <span><!-- (2) ---></span> <span><profile></span> <span><id></span>dev<span></id></span> <span><activation></span> <span><activeByDefault></span>true<span></activeByDefault></span> <span></activation></span> ... <span></profile></span><!-- (1) ---> <profiles> <profile> <activation> <property> <name>debug</name> </property> </activation> ... </profile> </profiles> <!-- (2) ---> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile>
Enter fullscreen mode Exit fullscreen mode
override enabled profile
assumes profile dev is enabled by default, and to enable profile production
mvn <span>-P</span><span>=</span><span>-dev</span>,productionmvn <span>-P</span><span>=</span><span>-dev</span>,productionmvn -P=-dev,production
Enter fullscreen mode Exit fullscreen mode
原文链接:Maven notes (1)
暂无评论内容