Maven知识记录(三)项目中使用maven私服
Maven知识记录(三)项目中使用maven私服
如何在项目的pom中使用maven私服
在上一篇文章中已将nexus搭建完成。访问服务器地址验证成功,在我们项目里开始使用私服之前先了解一下maven依赖顺序,也就是mavne下载文件访问仓库的顺序。
- 本地仓库查找,找得到引入到项目,找不到执行下一步。
- 未设置远程仓库时,进行中央仓库搜索(maven官方提供的一号仓库)找得到下载到本地仓库后引入到项目,找不到给出错误信息。
- 若设置了远程仓库则按配置远程仓库地址的顺序下载到本地后引入到项目,同样找不到给出错误信息。
上面第三条提到按配置远程仓库地址的顺序进行搜索下载。下面简要说明下:
- settings_mirror 的优先级高于central
- settings_profile_repo 优先级高于 settings_mirror
- settings_profile_repo 优先级高于 pom_repositories
- settings_profile_repo 优先级高于 pom_profile_repo
- pom_profile_repo 优先级高于 pom_repositories
- pom_repositories 优先级高于 settings_mirror
最后搜素顺序如下:
local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central
(对比着配置文件的节点名称来看更容易理解些)
看完上面这些内容后,我们开始在项目中配置maven私服吧。
一、maven私服配置信息
地址:http://ip:8081(搭建maven私服的地址)
管理帐号:admin 管理密码:123456 (登录私服的账号、密码)
发包帐号:maven 发包密码:123456 (为了安全起见,使用管理账号单独创建的账号密码用于发包使用)
二、maven私服使用
普通项目成员即不需要向私服发布包的,只需要在 pom 文件中加入以下配置即可
<repositories>
<repository>
<id>maven-public</id>
<name>maven-public</name>
<url>http://ip:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
配置说明:
其中 id 要和你的仓库名称一致,url 就是私服的仓库地址,就是type 为 group 的那个,它组合了一个 proxy 类型的和两个 hosted 类型的仓库。设置 snapshots 的 enabled 为ture,表示允许下载 snapshots 版本的包。
引用私服中的jar包:
<dependencies>
<dependency>
<groupId>com.wangms.commons</groupId>
<artifactId>commons-utils</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
三、发布公共资源包到maven私服:
向私服仓库中发布包,首先需要对仓库有权限才可以,没有权限的用户是没办法发布的。
打开 maven 的配置文件 setting.xml ,找到 servers 节点在其中添加 server 节点,用户名和密码也可以是管理员创建的账号,但是需要对仓库有添加权限。
配置本地maven settings.xml
提示:两种配置方法
- 直接配置maven目录下的conf下的settings.xml文件。
- 复制该文件到用户目录下的.m2目录,两种方法配置效果是一样的,看个人喜好了,加载顺序是.m2下的settings.xml目录接着是maven config目录下的settings.xml。
<servers>
<server>
<id>releases</id>
<username>maven</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>maven</username>
<password>123456</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!--镜像采用配置好的组的地址-->
<url>http://ip:8081/repository/maven-public/</url>
<mirrorOf>!internal.repo,*</mirrorOf>
</mirror>
</mirrors>
配置需要上传到私服上的项目pom.xml配置信息
<distributionManagement>
<!--配置线上releases仓库地址,只要是正式版本都会上传到该地址
(注意要和settings.xml文件里面的配置名称相同)-->
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://ip:8081/repository/maven-releases/</url>
</repository>
<!--配置线上snapshots仓库地址,只要是快照版本都会上传到该地址
(注意要和settings.xml文件里面的配置名称相同)-->
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://ip:8081//repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
特别说明:
当pom.xml中同时配置了releases仓库和snapshots仓库时。
- pom.xml文件开头的版本配置1.0.0-SNAPSHOT为build到snapshots库,
- pom.xml文件开头的版本配置1.0.0 (不带-SNAPSHOT) 的会build到releases库,
如果只配置了releases库而版本号写的是带-SNAPSHOT的,build到最后一步会报400错误,因为它找不到对应的库。
四、maven打包命令:
公共资源jar包发布到maven私服命令如下:
mvn clean deploy
扩展知识点:
- package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
- install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
- deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
Maven私服的搭建和使用相关的系列文章共三篇,欢迎阅读
Maven知识记录(一)初识Maven私服
Maven知识记录(二)使用Nexus搭建Maven私服
Maven知识记录(三)项目中使用maven私服