我们执行下列命令进行构建时,其实是跟maven构建生命周期有关
mvn clean package
mvn clean install
mvn clean deploy 。。。。
https://maven.apache.org/plugins/
官网有一句这样的描述:Maven is - at its heart - a plugin execution framework; all work is done by plugins. maven本质是一个插件执行框架,所有的工作都有插件来完成。
上图是一个default生命周期的简单版
maven一共有三个生命周期,default,site和clean
1.生命周期的组成
生命周期是有一个个阶段(phase)组成,每个phase由plugin和goal绑定
plugin是具体的插件,goal是绑定在插件的目标,一个插件可以绑定多个goal
我们执行mvn package命令 就是执行的default生命周期的package之前的所有phase包含package,例如package前面的验证 编译 测试 等和package各个phase都会执行。
当然最终完成执行任务的是一个个plugan:goal。
也就是说生命周期由一个个phase组成,phase又由一个个plugin组成,plugin上又绑定了具体的goal
2.多生命周期
多个生命周期可以共同执行(也是必须按顺序)
我们执行mvn clean package时实际上运行clean和default两个生命周期中的多个phase。
3.特殊plugin
一些特殊的命令 例如 mvn dependcy:tree 这是直接运行dependcy这个plugin的tree goal,非任何生命周期。
4.增强maven功能
maven提供了一些内置的plugin,绑定到了phase上,如果我们需要另外的plugin来增加maven的功能,可以绑定到phase上。例如
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行mvn verify就能看到一个包含源码的jar包 绑定到了verify这个phase上
平时我们需要增强扩展maven的功能需要一些其它的插件,可以去官网找
http://maven.apache.org/plugins/index.html maven官网