maven 依赖、仓库、生命周期和插件、继承与聚合配置速览

基本配置
POM:项目对象模型,Project Object Model
表示pom的版本,maven2和maven3中modelVersion只能是4.0.0
mvn archetype:generate快速生成项目,格式为:groupId:artifactId:version:goal
:打包方式,默认是jar,还有:war、pom、maven-plugin、ear

依赖管理
/:test表示测试需要,默认是compile
:可选性依赖,可选性依赖的不会被传递,不建议使用

dependency完全配置
net.sf.json-lib json-lib 2.2.2 jar compile false junit junit jdk15
scope
compile:默认
test:测试包下可以,打包不加入,比如:junit
provided:编译和测试的依赖,打包不加入,比如:servlet-api
runtime:测试和运行有效,编译时不加入,比如:jdbc驱动
system:本地文件依赖(本地仓库外的),没有移植性
传递优先级
第一原则:路径短优先
第二原则:第一声明者优先(pom解析顺序)
最佳实践
用exclusion排除依赖
归类依赖,用properties定义变量统一版本
优化依赖,mvn dependency:list查看当前项目已解析依赖;mvn dependency:tree依赖树
仓库
本地仓库
远程仓库
优先找本地仓库,如果没有就去远程仓库下载,如果远程仓库也没有则报错
可以做个私服,代理多个的远程仓库,并把公司的私有仓库放上面
配置远程仓库
cloudhopper cloudhopper Repository for Cloudhopper http://maven.cloudhopper.com/repos/third-party/ true false
cloudhopper

索引地址
http://mvnrepository.com/ 
http://search.maven.org/
仓库下载地址
https://repo1.maven.org/maven2/ 
https://repository.jboss.org/maven2/ 
https://repository.sonatype.org/content/groups/public/ 
http://maven.aliyun.com/nexus/content/groups/public 
http://repo.springsource.org/libs-milestone-local
发布项目到私服
https://www.cnblogs.com/luotaoyeah/p/3817465.html
配置:
user-snapshot User Porject Snapshot http://localhost:8081/nexus/content/repositories/snapshots/ true user-release User Porject Release http://localhost:8081/nexus/content/repositories/releases/
命令:mvn clean deploy
镜像
… maven.net.cn one of the central mirrors in china http://maven.net.cn/content/groups/public/ central …
复杂的需求,Maven还支持更高级的镜像配置:
1.
匹配所有远程仓库。
2.external:

匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
3.repo1,repo2
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
4.*,!repo1
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。
生命周期和插件
生命周期功能由插件提供,生命周期和插件协同一起工作
阶段:清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成
三套生命周期:clean、default、site『建立项目站点』
描述插件
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1
mvn help:describe -Dplugin=compiler
mvn help:describe -Dplugin=compiler -Dgoal=compile
mvn help:describe -Dplugin=compiler -Ddetail
可以用插件前缀来简化mvn命令的调用
聚合与继承
聚合
一般聚合项目用pom
聚合项目与子项目平行目录结构的配置
../subModule1 ../subModule2
继承






父模块dependencyManagement中定义的依赖:不会为父模块和子模块实际依赖,必须在子模块定义实际定义才行,而dependencies为导致父模块和所有子模块的依赖不必要的资源;pluginManagement和plugins有相同的道理
可以被继承的元素
groupId:项目组ID,项目坐标的核心元素
version:项目版本,项目坐标的核心因素
description:项目的描述信息
organization:项目的组织信息
inceptionYear:项目的创始年份
url:项目的URL地址
developers:项目的开发者信息
contributors:项目的贡献者信息
distributionManagement:项目的部署配置
issueManagement:项目的缺陷跟踪系统信息
ciManagement:项目的持续集成系统信息
scm:项目的版本控制系统信息
malilingLists:项目的邮件列表信息
properties:自定义的Maven属性
dependencies:项目的依赖配置
dependencyManagement:项目的依赖管理配置
repositories:项目的仓库配置
build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
reporting:包括项目的报告输出目录配置、报告插件配置等
裁剪mvn构建的模块
-am,–also-make:同时构建所列模块的依赖模块
-amd,-also-make-dependents:同时构建依赖于所列模块的模块
-pl,–projects:构建指定的模块,模块间用逗号分隔

-rf,-resume-from:在完整的反应堆构建顺序基础上指定从哪个模块开始构建

作者:涂有
来源:CSDN
原文:https://blog.csdn.net/ty497122758/article/details/79121808
版权声明:本文为博主原创文章,转载请附上博文链接!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享