Maven常用的构建命令
mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库
Maven自动建立目录骨架
创建目录的两种方式:
archetype:generate 按照提示进行选择
archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名+模块名
-Dversion=版本号
-Dpackage=代码所存在的包
Maven中坐标和仓库的概念
构建:
在maven世界中任何一个依赖、插件、项目构建的输出都可以被称为构建。
坐标:
所有构建通过坐标作为其唯一标识。就好像我们的工作单位或家庭地址。
仓库:
用来管理项目的依赖,分为本地仓库和远程仓库。默认地址在maven\lib\maven-model-builder.jar解压打开后里面org\apache\maven\model\pom-4.0.0.xml。这是maven提供的超级pom,所有的maven项目都会继承这个pom。打开这个文件后<repository>
标签内<url>
标签就是默认的全球的中央仓库的地址,可以用浏览器打开,在里面可找到大部分的开源的java项目。
镜像仓库
修改镜像仓库的位置:打开maven\conf\settings.xml 找到
|
|
更改仓库的位置
默认仓库位置路径:C:\Users\username.m2\repository
修改时还是打开maven\conf\settings.xml,找到<localRepository>
Maven的生命周期和插件
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
clean、compile、test、package、install
maven生命周期
clean 清理项目
- pre-clean 执行清理前的工作
- clean清理上一次构建生成的所有文件
- post-clean执行清理后的文件
default 构建项目(最核心)
- compile test package install
site 生成项目站点
- pre-site 在生成项目站点前要完成的工作
- site 生成项目的站点文档
- post-site 在生成项目站点后要完成的工作
- site-deploy 发布生成的站点到服务器上
三块生命周期彼此独立
Maven依赖范围
maven中提供了三种classpath:
1、编译
2、测试
3、运行
将<scope>test</scope>
设置为test时则只存在于测试范围中,依赖范围就是用来控制和三种classpath的关系
scope具体属性:(可参考maven.apache.org官网guide)
compile:默认的范围,编译、测试、运行都有效
provide:在编译和测试时有效
runtime:在测试和运行时有效
test:只在测试时有效
system:与本机系统相关联,可移植性差
import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
Maven依赖传递
Maven的依赖<dependency>
默认会向下集成,如果构建想去除依赖可以使用<exclusion>
标签。
补充小知识:
maven默认采用jdk1.5,那如何采用1.8的版本?
需要要修改settings.xml中找到<profile>
将其中改为对应版本即可
Maven依赖冲突
1、短路优先
A->B->C->X(jar)
A->D->X(jar)
优先解析路径短的版本
2、先声明先优先
如果路径长度相同,则谁先声明,先解析谁
聚合和继承
聚合<modules>
标签,将需要聚合的类加入<module>
继承
父POM中将dependencies中的放入dependencyManagement,并在properties中声明版本号等属性信息。
子POM中加入父POM的坐标,在依赖中写入基本的坐标名即可。
附录 Maven pom.xml文件解析
|
|