我是靠谱客的博主 多情黑裤,最近开发中收集的这篇文章主要介绍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核心管理文件,用于项目管理,组织管理,依赖管理管理信息的操作
<!--指定当前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>
不常用到的配置
<!-- 项目地址 -->
<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>
配置全局参数:一般用于规定依赖的同一版本
<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编译时加入,运行不需要,因为容器中有,在加入会报错
<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单元测试
<!-- 依赖列表: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
<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版本,因为山鸡离南哥近
<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>
<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会发现同时安装了三个项目
<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依赖传递 Maven依赖冲突 Maven聚合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复