项目管理利器—maven(二)
来源:互联网 发布:java包装一年工作经验 编辑:程序博客网 时间:2024/06/05 08:48
一.maven的生命周期和插件
完整的项目构件过程包括:
清理,编译,测试,打包,集成测试,验证,部署
maven生命周期包括:
clean 清理项目:
pre-clean 执行清理前的工作 clean 清理上一次构建生成的所有文件 post-clean执行清理后的文件
default 构件项目(最核心)
compile test package install等
site 生成项目站点
pre-site 在生成项目站点前要完成的工作 site 生成项目的站点文档 post-site 在生成项目站点后要完成的工作 site-deploy 发布生成的站点到服务器上
二.maven中的Pom.xml解析
pom.xml常用元素介绍
pom是maven项目的核心管理文件,用于项目描述,组织管理,依赖管理,构建信息管理
<modelVersion>4.0.0</modelVersion> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <!-- 第一个0 表示大版本号 第二个0 表示分支版本号 第三个0 表示小版本号 snapshot快照 alpha 内部测试 beta 公测 Release 稳定 GA正式发布 --> <version>0.0.1snapshot</version> <!-- 默认是jar war zip pom --> <packaging></packageing><!--项目描述名 --><name></name><!--项目地址 --><url></url><!--项目描述--><description></description><!--开发人员信息--><developers></developers><!--许可证信息--><licenses></licenses><!--组织信息--><organization></organization><!--依赖项--><dependencies> <dependency> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <version>0.0.1snapshot</version> <type></type> <scope>test<scope> <!-- 设置依赖是否可选 --> <optional></optional> <!-- 排除依赖传递列表 --> <exclusions> <exclusion> </exclusion> </exclusions> </dependency></dependencies><!-- 依赖的管理 --><dependencyManagement> <dependencies> <dependency></dependency> </dependencies></dependencyManagement><build> <!-- 插件列表 --> <plugins> <plugin> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <version>0.0.1snapshot</version> </plugin> </plugins></build> <!-- --><parent></parent><!-- --><modules> <module></module></modules>
三.maven依赖范围
<scope>test</scope>
三种classpath:
1.编译2.测试3.运行
6中scope值包括:
compile 默认的范围,编译测试运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependecy的配置
四.maven依赖传递
山鸡跟南哥混,南哥跟B哥混,B哥跟山鸡产生间接的依赖关系
新建三个maven项目
在nage的pom.wml文件中,加入bge的坐标
项目运行,发现报错,提示找不到bge的架包,因为本地仓库中并没有。所以要先将bge进行打包。
然后安装到本地仓库中
然后再运行一下nage
这样呢,nage就构建成功了。
然后我们看一下shanji,我们让shanji依赖于nage
然后对nage进行打包,再运行shanji,发现构建成功了。
然后shanji只想听nage的,不想听bge的,那么就需要移除bge的依赖。
那么系统就自动的将bge的依赖移除了。
项目中的JRE默认的是1.5的,我们可以修改成1.7的
一劳永逸的方法,修改settings文件
五.maven依赖冲突
1.短路优先
A->B->C->X(jar)
A->D->X(jar)优先
打开链接,Commons IO
我们为bge复制一个2.4的版本
<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency>
然后为nage复制一个2.0的版本
<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0</version></dependency>
我们可以看到Commons IO这个架包已经自动下载下来了
那么shanji的架包离nage最近,所以也是2.0版本的,这就叫做短路优先。
2.先声明先优先
如果路径长度相同,则谁先声明,先解析谁
例子:
首先将nage中对bge的依赖删除掉,我们让shanji同时依赖bge和nage,并将bge的依赖放在nage的前面。
我们可以看到commons-io的版本变更为了2.4的版本。如果把nage放在bge的前面,那么commons-io版本就是2.0.
六.maven聚合和继承
在maven中,将多个项目进行install到本地仓库中,必须对其依次执行,maven中有种方式可以将其一起执行,这种方式称为聚合。
我们将bge,nage,shanji进行聚合。
创建新的项目hongxing.aggreation
继承:
我们再新建一个maven项目:
修改pom.xml文件,删除/src/main/java和/src/test/java两个文件,然后更新一下。
然后修改bge的pom.xml文件,让其继承自parent
- 项目管理利器—maven(二)
- 项目管理利器—maven
- 项目管理利器(Maven)——Maven的生命周期
- 项目管理利器-maven
- 项目管理利器-Maven
- 项目管理利器--Maven
- Maven项目管理利器
- 项目管理利器-maven
- 项目管理利器Maven
- 项目管理利器-maven
- 项目管理利器Maven
- Maven项目管理利器
- 项目管理利器--Maven
- 《项目管理利器Maven》学习(二):手动创建第一个Maven案例maven01
- 项目管理利器(Maven)——pom.xml解析
- 项目管理利器(Maven)——依赖范围
- 项目管理利器(Maven)——依赖传递
- 项目管理利器(Maven)——依赖冲突
- git commit 不小心把账号密码文件提交上去并push到远程后,而且还merge到master分支后 怎么删除commit记录
- okhttp3的详细介绍
- Android 进阶之路:常见设计模式之代理模式一
- 《数字技术》连载29:第4章 信息的寄存传输和转换 第2节 信息的译码,译码器
- 在线与本地myeclipse安装svn
- 项目管理利器—maven(二)
- SharedPreferences中的commit和apply方法
- Oracle性能调整之--DML语句性能调整
- 前端小白--工具篇(一)雪碧图CssSprite
- datatables表格分页和导出的例子
- 如何快速转载CSDN中的博客
- Mac使用阿里云Code提供的Git仓库做版本控制
- ehcache的简单运用
- ListenableFuture