Maven

0、mvn [命令] 在pom.xml文件目录下执行  --------------------------

1、项目结构

2、加载依赖时会自动加载依赖的子依赖。

3、中国区用户可以使用阿里云提供的Maven镜像仓库。

4、search.maven.org查看依赖坐标信息(groupId、artifactId、version)

5、Maven通过解析依赖关系确定项目所需的jar包,常用的4种scope有:compile(默认),testruntimeprovided

6、使用Maven构建项目就是执行lifecycle,执行到指定的phase为止。每个phase会执行自己默认的一个或多个goal。goal是最小任务单元。

执行每个phase,都是通过某个插件(plugin)来执行的,Maven本身其实并不知道如何执行compile,它只是负责找到对应的compiler插件,然后执行默认的compiler:compile这个goal来完成编译。所以,使用Maven,实际上就是配置好需要使用的插件,然后通过phase调用它们。

自定义插件往往需要一些配置,需要指定Java程序的入口。

Maven自带的标准插件例如compiler是无需声明的,只有引入其它的插件才需要声明。

7、Maven可以有效地管理多个模块,我们只需要把每个模块当作一个独立的Maven项目,它们有各自独立的pom.xml

8、Maven Wrapper,它可以负责给这个特定的项目安装指定版本的Maven,而其他项目不受影响。

9、把自己的库发布到Maven的repo中

(1)上传静态文件

(2)通过Nexus发布到中央仓库

我们不能直接发布到Maven中央仓库,而是通过曲线救国的方式,发布到central.sonatype.org,它会定期自动同步到Maven的中央仓库。

没有私有Nexus服务器,还可以发布到GitHub Packages。GitHub Packages是GitHub提供的仓库服务,支持Maven、NPM、Docker等。

10、依赖冲突及其解决

(1)依赖调节原则

a. 第一声明者优先原则

按导入坐标顺序,以最先导入的为准

b. 路径近者优先原则

如,直接依赖优于间接依赖

(2)排除依赖

使用exclusions标签将传递过来的依赖排除出去。

在当前要排除的依赖的dependency标签内部添加exclusions标签,再加入exclusion子标签,字标签可以有多个。

(3)版本锁定(使用最多)

采用直接锁定版本的方式确定依赖jar包的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,一锁定的版本为准添加到工程中,此方法在企业开发中经常使用。

方法:第一步,在dependencyManagement标签中锁定依赖的版本;第二步,在dependency标签中声明要导入的maven坐标。

注意:GitHub的Package只能作为私有仓库使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值