yeskery

Maven 上传 现有的 jar包到远程仓库

前言:通常允许上传的远程仓库有两种:Snapshots 和 Releases,分别为快照版仓库和稳定版仓库。快照版仓库用于存放不稳定的开发包,稳定版仓库用于存放稳定的包。

解决方案有两个:

通过Nexus UI 界面部署

有时候有个 jar 文件你无法从公共 Maven 仓库找到,但是你能从其它得到这个 jar 文件(甚至是 POM),那么你完全可以将这个文件部署到 Nexus 中,使其成为标准流程的一部分。步骤如下:

  1. 点击左边导航栏的 Repository;
  2. 在右边的仓库列表中选择一个仓库,如 3rd Party;
  3. 然后找到下面的tab,选择最后一个 Artifact Upload,你会看到构件上传界面;
  4. 选择你要上传的构件,并指定 POM,(或者手工编写 GAV 等信息),最后点击 Upload,该构件就直接被部署到了 Nexus 的 3rd Party 仓库中。

如图:
nexus_ui_deploy

通过 Maven 命令行部署

  • maven package:打包到本项目,一般是在项目 target 目录下。
  • maven install:打包会安装到本地仓库
  • maven deploy:将打包的文件发布到远程仓库(私服),提供其他人员进行下载依赖。==》这个在本地仓库也会生成
  1. <!-- 远程仓库-->
  2. <servers>
  3. <server>
  4. <id>maven-snapshots</id> // 快照仓库 ID
  5. <username>admin</username>
  6. <password>admin1234</password>
  7. </server>
  8. <server>
  9. <id>maven-releases</id> // 发布仓库 ID
  10. <username>admin</username>
  11. <password>admin1234</password>
  12. </server>
  13. </servers>

注:认证 id 这个必须和 nexus DrepositoryId 对应的仓库标识(id)一致,那么怎么查看仓库 ID 呢?

nexus_drepository_id_1

如下图

nexus_drepository_id_2

nexus_drepository_id_3

别人生成好的 jar 的 pom 配置信息如下:

  1. <dependency>
  2. <groupId>com.zhenai.dakehu</groupId>
  3. <artifactId>dakehu-commons</artifactId>
  4. <version>1.0.0-SNAPSHOT</version>
  5. </dependency>

打开 CMD,将其定位到你要上传的jar包的文件夹,类似的输入以下命令:(注意红色的要一一对应)

  1. mvn deploy:deploy-file -DgroupId=com.zhenai.dakehu -DartifactId=dakehu-commons -Dversion=1.0.0-SNAPSHOT -Dpacckaging=jar -Dfile=dakehu-commons-1.0.0-SNAPSHOT.jar -DrepositoryId=maven-snapshots -Durl=http://112.124.33.150:8081/repository/maven-snapshots/
  • –Dversion 版本信息
  • -DrepositoryId 仓库标识id
  • -Durl 私服上仓库的位置,打开nexus——>repositories菜单,可以看到该路径。
  • -Dfile 直接写文件名即可

如果 cmd 当前路径与 jar 包的路径在同一文件夹下,如果不在同一个目录下,需要在 -Dfile 后面写上文件的绝对路径。

deploy 上传遇到的问题

  1. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact com.zhenai.dakehu:dakehu-commons-1.0.0-20171212.105921-1 from/to maven-snapshots (http://112.124.33.150:8081/repository/maven-snapshots/): Failed to transfer file: http://112.124.33.150:8081/repository/maven-snapshots/com/zhenai/dakehu/dakehu-commons/1.0.0-SNAPSHOT/dakehu-commons-1.0.0-20171212.105921-1.jar.

Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] ===> 用户验证失败

说一下我遇到的问题:

  1. neuxs 默认的帐号密码 admin/admin123,同事偷偷把密码改为 admin1234
  2. maven setting.xml 中仓库认证的 id 不对

<id>maven-snapshots</id> // ===》这个必须和 nexus DrepositoryId 对应的仓库标识(id)一致

参考资料:

  1. Nexus入门指南(图文)
  2. Maven学习-Profile详解
  3. maven全局配置文件settings.xml详解

本文转载自:https://my.oschina.net/360yg/blog/1588899

评论

发表评论 点击刷新验证码

提示

该功能暂未开放