人最先衰老的从来不是容貌,而是那份不顾一切的闯劲.
前面①中已经介绍了搭建私服和创建仓库,本文中介绍怎么管理构建,idea开发工具发布jar包到私服.
一:在maven管理器中创建人员以及赋予权限
第一步:创建权限(Privileges)
第二步:创建角色(Roles)
第三步:创建人员
填写完信息,点击保存.
二:让maven项目使用搭建的maven私服
maven下的setting.xml文件和项目中的pom.xml文件的关系:
Ⅰ.settting.xml文件就是本地,电脑上的全局变量;而pom.xml文件就是局部变量。
Ⅱ.项目创建的pom.xml文件对于项目来说,优先级别最高。如果pom.xml文件中没有配置镜像地址的话,只能去按照全局变量中定义的地址去下载.
Ⅲ.那怎么去找全局变量呢?IDE【编译工具】中直接指定确定的setting.xml文件,这样在pom.xml文件中没有的情况下,IDE就按照设定的去找对应的setting.xml文件。
注:有一点要注意的就是,maven如果是你自己下载的,那里面肯定会有一份setting.xml文件。什么都不配置的话,它全部都是按照默认值去干的,例如本地仓库它默认的就是放在用户/.m2/文件夹下的。
①在原始的setting文件中加入
拷贝的这个地址,就是下面即将在setting.xml文件中添加时使用的。可以对应下面的setting.xml文件中看。
<!--id 自定义 username和password 为nexus中的人员账号和密码-->
<servers>
<server>
<id>nexus_dep</id>
<username>xxxx</username>
<password>xxxx</password>
</server>
<server>
<id>nexus_admin</id>
<username>xxxx</username>
<password>xxxx</password>
</server>
</servers>
<!--ID 为server中的相应ID,URL为nexus相应仓库的URL pom.xml文件中没有指定镜像地址,则项目使用此处配置的,如果pom.xml文件中配置了,此处可以不需要配置-->
<mirrors>
<mirror>
<id>nexus_dep</id>
<mirrorOf>*</mirrorOf>
<url>http://ip+port/repository/maven-public/</url>
</mirror>
</mirrors>
②修改项目中的pom.xml文件
A:配置远程仓库地址
B.配置打包时发布jar包到私有仓库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 仓库服务镜像 maven setting文件中配置了,此处可以不用配置 ID和name自定义-->
<repositories>
<repository>
<id>myMaven</id>
<name>myMaven</name>
<url>http://ip+port/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!--发布到私服相关配置 ID需要与setting文件中的server ID对应-->
<distributionManagement>
<repository>
<id>nexus_dep</id>
<name>Releases</name>
<url>http://ip+port/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus_dep</id>
<name>Snapshot</name>
<url>http://ip+port/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
<repositories>的配置,你可以在它下面添加多个<repository> ,每个<repository>都有它唯一的ID,一个描述性的name,以及最重要的,远程仓库的url。此外,
<releases><enabled>true</enabled></releases>告诉Maven可以从这个仓库下载releases版本的构件
<snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件。
禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,应该避免使用。如果你想使用局域网内组织内部的仓库,可以激活snapshot的支持。
在pom文件中加入distributionManagement节点,注意:pom.xml中repository里的id需要和maven中setting.xml里的server id名称保持一致.
③发布jar包到私服
Q&A:
1.重复发布出现 Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.
原因:经排查发现是因为重复发布导致的。maven私有仓库默认不允许重复部署。
浏览器登录nexus管理界面–>设置图标–>Repository–>Repositories–>maven-releases–>Hosted–>请选择‘Allow redeploy’策略,默认是disable策略,然后保存。 请注意,不同版本的nexus,进入的路径可能有细微区别。
- 如果出现400,需要注意项目下的pom.xml文件和maven使用的setting.xml文件的配置是否一致。
- 如果出现401,需要检查maven使用的setting.xml中的帐号和密码是否正确,相应的repository是否为“Allow Redeploy”。
2,发布无权限 Could not transfer artifact from/to XXXXXX Not authorized
原因,如果是使用的新建人员,则人员没有配置相应权限.
3.maven下载jar包,文件以.lastUpdated结尾
原因:仓库里面没有相应的jar包
解决:
1.先删除本地的文件(通过cmd批量删除本地仓库中以.lastUpdated结尾的文件 del *.lastUpdated /s)
2.上传jar包到私服
3.在项目中重新下载jar包
三:查询jar包
点开查看:
点进入jar包的这个概要信息
四:上传jar包
1.使用命令上传第三方jar到nexus
上传一个处理word的jar包到nexus上,jar包为jacob,资源库为hosted
我们先在nexus上搜索一下:下面是搜不出来的
把hosted资源库配置到maven的settting.xml文件中
<!--id自定义,但是在使用命令上传的时候会用到-->
<server>
<id>myself_hosted</id>
<username>admin</username>
<password>admin123</password>
</server>
使用以下命令
导入第三方jar的命令
mvn deploy:deploy-file -DgroupId=sxd.jar -DartifactId=jacob -Dversion=1.18 -Dpackaging=jar -Dfile=G:\jar\jacob-1.18.jar -Durl=http://localhost:8081/repository/myself_hosted/ -DrepositoryId=myself_hosted
导入第三方pom文件的命令
mvn deploy:install-file -Dfile=D:\document\IdeaProjects\myTestDocument\jar\tx-lcn-4.2.0-SNAPSHOT.pom -DgroupId=com.codingapi -DartifactId=tx-lcn -Dversion=4.2.0-SNAPSHOT -Dpackaging=pom
命令解释:
-DgroupId=sxd.jar 自定义
-DartifactId=jacob 自定义
-Dversion=1.18 自定义 三个自定义,构成pom.xml文件中的坐标
-Dpackaging=jar 上传的类型是jar类型
-Dfile=G:\jar\jacob-1.18.jar jar的本地磁盘位置
-Durl=http://localhost:8081/repository/myself_hosted/ hosted资源库的地址,下图中
-DrepositoryId=myself_hosted setting.xml文件中配置的ID
上传完成,再nexus中查看一下:
上传成功!!!
2.使用窗口Upload
Extension:类型(jar/pom)
注:jar文件和pom文件都要上传,否则下载代码的时候没有相应的pom文件
至此maven项目使用maven仓库私服相关配置结束,感谢大家阅读!