1,简介
mvn install 就可以自动执行编译,测试,打包,再将我们的jar包安装到仓库中
mvn compile 将src/main下的java文件进行编译
mvn test 会先编译项目,再执行测试代码
mvn package 将项目打成一个jar包放到target目录中
mvn clean 将项目生成的编译文件清除掉
@Test注解加入后会,标注该方法,执行mvn test,maven package,mvn install时都会执行该方法
Maven目录结构中src/main/java下放包,java文件,src/test/java下放包,java文件
Pom.xml中4个要素,再project标签中,加入<modelVersion>4.0.0</modelVersion>
<groupId>com.jdtc.www(组织标识)</groupId><artifactedId>raptor-api项目标识</artifactedId>
<version>snapshot-0.0.1</version>
添加依赖
2,利用maven构建java或web项目
把quickstart换成webapp即可生成web项目骨架
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
3,maven核心概念
坐标
利用groupId,artifactedId,version可以确定引用哪个maven包
依赖管理
再pom中配置上面三个,即可完成引用,再配置scope标签即可确定什么时候引用,compile编译测试运行都可用,test仅测试可用,provided,编译测试有效,运行使用无效;runtime仅运行时有效。传递性依赖指的时a依赖b,b依赖c,那么a也依赖c。
仓库
本地仓库,远程仓库(私服,mavenCentral-apache-其他远程仓库)
三大生命周期
Clean lifecycle再进行构建前,进行一些清理工作
Default lifecycle 构建的核心部分,编译,测试,打包,部署
Site lifecycle 生成项目报告,站点,发布站点
一个clean周期分为三个阶段,分别是pre-clean,clean,post-clean,我们执行的mvn clean其实就是刚刚的clean,它其实执行了mvn pre- clean clean。
一个site周期分为三个阶段,生成项目站点文档,执行一些生成站点文档之后完成的工作,为部署做准备,将生成的站点文档部署到特定服务器上。
插件
- Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
- 每个插件都能实现多个功能,每个功能就是一个插件目标。
Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务,例如compile就是插件maven-compiler-plugin的一个插件目标。
4,聚合与继承
maven的聚合与继承,两者是完全不同的两个关系,只是通常把他们组合使用,聚合项目包含很多子项目,他们的目录关系是可以并列也可以包含的。
聚合项目在其pom中配置modules标签,然后标签中填入被聚合的项目,这样方便控制多个子项目?
被聚合的项目并不知道自己被聚合!
继承,父项目并不知道他是被谁继承了,每个子项目都要做出声明,声明继承了哪个父项目
5,常见标签含义
Properties标签中的可以在其他地方,利用${标签名}直接调用
Parent标签就是声明继承哪个父项目,里面需要填入groupId,version,那么子项目就可以仅需有artifactedId就可以了
Dependencies的依赖项全部被子项目继承
dependencyManagement的依赖项,不会被子项目继承,必须由子项目显式的声明,但其不用声明version,可以直接用父项目中该标签中定义的,若需用其他版本的,自行加入version即可
build可以控制编译时调用的资源和插件
profile标签配置了多个编译的设定,编译时指定相应的profile配置即可