Maven学习
参考链接:maven教程 书籍《Maven实战》
maven是什么
maven是一个项目管理工具,基于pom.xml的配置,通过一小段描述信息来管理项目的构建、报告和文档等的一个软件项目管理工具。maven可以管理项目的整个周期,包括清除、编译、测试、报告、打包、部署等。
maven生命周期
- clean 清理项目,包含(前)pre-clean、(中)clean、(后)post-clean;
- defaulit 是三个生命周期中最核心的部分,包含了项目构建时所需要执行的所有步骤,包括编译、测试、执行、打包等;
- site 生成和发布 maven 站点,文档和统计数据可以自动生成,是maven很好用的功能。
maven clean install -Dmaven.test.skip=true命令解析
- 该命令结合了两个生命周期,clean和default。clean执行pre-clean和clean,不执行post-clean;install执行default周期的install之前的所有步骤
- -D参数为命令行插件配置的写法,后面跟一个参数键=参数值的形式来配置插件目标参数,-Dmaven.test.skip参数为true表示跳过执行测试
maven插件和生命周期的关系
- maven的生命周期是抽象的,他本身不做任何实际的工作,在maven中,实际的任务都交由插件来完成;
- default插件绑定如下图所示,可以理解为default生命周期中可用的且常用的maven命令;
- 获取插件信息可通过 https://maven.apache.org/plugins/index.html 网站,例如surefire插件的-Dmaven.test.skip=true参数描述在 https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html 可以找到,如下图所示
聚合和继承
- 聚合:聚合其他几个模块为一个大的模块
- 继承pom:为了消除每个模块重复的pom配置
- 实际项目中,往往发现一个pom既是聚合pom又是父pom,如下图server既是controller模块和其他模块的聚合pom(见<modules>标签),又是这几个模块的父pom(见<parent>标签),且server又是-starter-parent的子项目
- 注意:聚合/继承pom,其中<packaging>标签都必须为pom,且聚合/继承模块除了pom之外都没有实际的内容
Nexus私服
maven私服的一种,稍有规模地使用maven时,可以用Nexus架设私服。