maven

本文深入解析Maven项目构建流程,包括编译、打包、发布及依赖管理,提供Eclipse中Maven项目的实践指导,同时介绍如何在本地搭建Nexus私有仓库。涵盖版本管理、依赖传递性及多模块项目设置技巧。

教学视频:

http://www.icoolxue.com/album/show/45/


1,编译,打包,发布

将pom.xml放在根目录下,将java放在src/main/java,将测试类放在src/main/test中:

即可运行mvn compile编译,运行mvn test执行编译+测试,编译和测试结果会放在target目录下。

运行mvn package执行编译+测试+打包,运行mvn clean清除target目录以便重新编译和测试。

通过mvn install可将模块jar包放入.m2中,其他模块可像依赖外部jar包一样依赖该模块。

通过mvn deploy可将jar包放入私服。

通过mvn archetype:generate 可帮你生成格式。

推荐文件格式:

src
  main
    java
      package
    resources //配置文件
  test
    java
      package
    resources
target //maven帮你编译后创建的,clean后会消失
classes
pom.xml


2,pom.xml 管理jar依赖

可通过gav(groupId, articleId, versionId)坐标,定义自己项目的坐标,groupId通常为项目名称,articleId通常为模块,versionId为模块。

版本进化-->0.0.1-SNAPSHOT-->0.0.1-Release。第一个数字表示架构调整,第二个数字表示分支,第三个表示小改动。

可通过<dependency>,在pom.xml中导入依赖jar包,添加的jar包也只需要声明gav即可,既可以是第三方gav,也可以是自己子项目的gav。

依赖的jar包会从中央仓库下载到个人目录下的.m2中,即个人本地仓库。

本地仓库路径可以在setting.xml中<localRepository>配置。

dependency中还有一个scope属性,默认为compile,可选值还有test,provided,runtime

compile指的是编译范围有效,编译和打包都会讲该依赖存储进去。

test指的是测试范围有效,编译和打包都不会使用该依赖。用的最多,专用来标注测试jar,如junit。

provided依赖是指编译和测试有效,但打包不会加入。如servlet-api.jar,由于服务器通常已经有了此包,再打入包中会冲突。

runtime指的是运行时有效,编译时无效。如数据库连接jar。


3,在Eclipse中使用maven

下载m2eclipse插件,配置本地maven地址和setting.xml

可通过模板创建maven项目,可通过run as -> maven build... ,输入命令并执行编译,测试,打包,安装等操作


4,依赖传递性

默认compile会传递,test scope不会传递。

1,同级别依赖,则依赖第一个,如:

A依赖log4j-1.2

B依赖log4j-1.5

C依次依赖A和B,则C依赖于第一个依赖(书写顺序)

2,不同级别依赖,则依赖级别最高的,如:

A依赖于dbunit-1.2, 而dbunit-1.2依赖于common-log-1.5,即A间接依赖common-log-1.5

B依赖于common-log-1.3

C依次依赖于A和B,但C依赖于common-log-1.3,因为级别最高。

3,如果有冲突,则使用<exclusion>去除某个模块的某个依赖


5,多模块pom.xml设置技巧

pom中有常量${project.groupId},${project.versionId}。多模块中这些变量都是相同,所以相互引用时,在输入其他模块的gav时,可使用常量。

多模块可定义一个parent,所有依赖的版本定义在parent上。其他模块继承parent,声明依赖即可。


6,搭建nexus私服

里面分hosted,proxy,group类型。

hosted中有SNAPSHOT,Release和3rd Party,其中前两个通过mvn deploy发布到私服,3rd Party可以通过上传的方式添加。

proxy一般都是maven的中央仓库。

group是指自定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值