我是靠谱客的博主 多情黑裤,这篇文章主要介绍Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递 Maven依赖冲突 Maven聚合,现在分享给大家,希望可以做个参考。
Maven导jar包网址
https://mvnrepository.com
Maven生命周期
完整的项目构建过程: clean(清理)--->compile(编译)--->test(测试)
--->package(打包)---->集成测试--->验证--->部署
1.clean 清理项目
1.1pre-clean 执行清理前的工作
1.2clean 清理上一次构建生成的所有文件
1.3post-clean 执行清理后的文件
2.defaut 构建项目(最核心)
2.1compile 编译项目
2.2test 测试项目
2.3package 打包
2.4install 安装到本地仓库中
3. site 生成项目站点
3.1 pre-site 在生成项目站点前要完成的工作
3.2 site 生成项目的站点文档
3.3 post-site 在生成项目站点后要完成的工作
3.4 site-deploy 发布生成的站点到服务器上
pom.xml上常用元素介绍
pom.xml核心管理文件,用于项目管理,组织管理,依赖管理管理信息的操作
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<!--指定当前pom版本 --> <modelVersion>4.0.0</modelVersion> <!-- 组织名:包名.类名 --> <groupId>com.xalo.maven</groupId> <!-- 项目名 --> <artifactId>MavenSpringMVC_01</artifactId> <!-- 打包方式 jar: 大部分javaSE项目(默认导包方式) war: web项目 pom:聚合工程--> <packaging>war</packaging> <!-- 第一个0:大版本号, 第二个0:分支版本号, 第三个0:小版本号 SNAPSHOT:快照版(说明当前这个项目处于开发阶段), release:稳定版 beat:公测版 GA: 正式发布版 --> <version>0.0.1-SNAPSHOT</version> <!-- 项目名称,生成文档时使用到 --> <name>MavenSpringMVC_01 Maven Webapp</name> <!-- 项目地址 --> <url>http://maven.apache.org</url>
不常用到的配置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23<!-- 项目地址 --> <url>http://maven.apache.org</url> <!-- 项目描述--> <description>这是一个基于maven的SSM项目</description> <!-- 开发作者名称 --> <developers> <developer> <id>1</id> <name>张三</name> </developer> </developers> <!-- 许可证信息--> <licenses> <license> <distribution>由中国国防安全部认证</distribution> </license> </licenses> <!--组织信息 --> <organization> <name>蓝鸥科技</name> <url>http://www.lanoou.com</url> </organization>
配置全局参数:一般用于规定依赖的同一版本
复制代码
1
2
3
4
5
6<properties> <!-- 字符编码配置 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 全局版本设置 --> <spring.version>5.0.7.RELEASE</spring.version> </properties>
排除依赖列表
配置完成之后,在Maven Dependencies中只会看到spring-context包,排除了依赖它的包
Maven的依赖范围
用于指定maven依赖在哪个生命周期范围内有效,我们平时开发项目,需要将jar导入classpath中 maven为我们提供了三种classpath: 编译 测试 运行
在scope标签中通过<scope></scope>配置
scope有6种值:
(1) compile: 默认的范围,编译测试运行都有效
(2)provided:在编译和测试时有效,运行无效
如:servletAPI编译时加入,运行不需要,因为容器中有,在加入会报错
复制代码
1
2
3
4
5
6<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>
(3)runtime:在测试和运行有效,编译期间无效 如: jdbc的驱动类
(4)test:只在测试范围有效 如: junit单元测试
复制代码
1
2
3
4
5
6
7
8
9
10
11
12<!-- 依赖列表:pom中最重要的 --> <dependencies> <!--依赖坐标:用于本地仓库或者远程仓库中的jar包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!-- 指定依赖的依赖范围:测试阶段有效 --> <scope>test</scope> </dependency> </dependencies>
(5)system: 跟provide一样,只在编译和测试有效,
但与本机系统关联,可移植性差(javahome)
(6)import: 导入的依赖范围,它只使用在dependencyManagement中,
表示从其它的pom中,导入
dependency的配置 如: 将A中依赖导入B中
Maven依赖传递
创建是三个maven project
(1) 山鸡--->南哥 南哥---> B哥 那么山鸡---> B哥
B哥需要先compile package install 或者直接 install,
然后南哥才能引入compile,山鸡依赖南哥,南哥也需要clean install
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<modelVersion>4.0.0</modelVersion> <groupId>com.xalo.hongxiang.shanji</groupId> <artifactId>ShanJi</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!--山鸡依赖南哥:会产生传递依赖 因为南哥是依赖B哥的,所以此时山鸡会同时依赖南哥和B哥 --> <dependency> <groupId>com.xalo.hongxing.nange</groupId> <artifactId>NanGe</artifactId> <version>0.0.1-SNAPSHOT</version> <!--依赖排除--> <exclusions> <!-- 排除依赖列表: 排除B哥依赖 --> <exclusion> <groupId>com.xalo.hongxing.bge</groupId> <artifactId>Bge</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
Maven依赖冲突
两条原则:
(1)短路原则:
A--->B--->C--->X(.jar)
A---D---X(.jar) 优先
例如:
山鸡---> 南哥 ---> B哥 ----> commons-io2.4
山鸡 ---> B哥---> commons-io2.0
此时观察山鸡会依赖2.0版本,因为山鸡离南哥近
复制代码
1
2
3
4
5
6
7
8
9
10
11
12<modelVersion>4.0.0</modelVersion> <groupId>com.xalo.hongxing.nange</groupId> <artifactId>NanGe</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!--让南哥依赖2.0的版本 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0</version> </dependency> </dependencies>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12<modelVersion>4.0.0</modelVersion> <groupId>com.xalo.hongxing.bge</groupId> <artifactId>Bge</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- b哥依赖2.4版本 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies>
(2)先声明,先优先
如果路径相同,则谁先声明,先解析谁
Maven聚合
聚合:对多个项目放在一起运行,同时进行安装.
执行 clean, install会发现同时安装了三个项目
复制代码
1
2
3
4
5
6
7
8
9
10
11<modelVersion>4.0.0</modelVersion> <groupId>com.xalo.hongxing.parent</groupId> <artifactId>Parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!-- 聚合三个项目 --> <modules> <module>../Bge</module> <module>../NanGe</module> <module>../ShanJi</module> </modules>
最后
以上就是多情黑裤最近收集整理的关于Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递 Maven依赖冲突 Maven聚合的全部内容,更多相关Maven生命周期Maven导jar包网址Maven生命周期pom.xml上常用元素介绍Maven的依赖范围Maven依赖传递 内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复