maven的核心内容都在pom上面,pom包含几个部分:
- 1. groupid,artifactid以及版本之类的;
- 2. 父亲;
- 3. 依赖,dependency
- 4. 若干lifecycle。
lifecycle包含若干步骤,每个步骤包含若干目标,每个目标由一个plugin提供。
不同的pom类型有不同的lifecycle,比如jar,war和ear的步骤就不一样。
通常lifecycle都包含clean,build,test,package,install和deploy。其它都是字面意思,install的意思是安装到本地的repository,deploy是安装到远程服务器的repository。
每种package都有自己特定的打包方式,如果你有特殊的需求,可以使用assembly。
每个pom原则上只定义一个操作步骤,但如果有两种不同的需求,并且相互之间区别不大,可以用profile。profile有id,并且可以包含若干goal来覆盖pom本身定义的goal。
maven编译时可以选择不执行test,mvn install -Dmaven.test.skip=true
如果一个pom包含若干model,比如:
<modules>
<module>service</module>
<module>adaptor</module>
<module>application</module>
<module>web</module>
</modules>
那么maven会使用reactor进行排序,排序的原则是,被依赖的先编译。
然后他会先执行外面的模块,再执行内部的模块。