首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何将项目打包部署到私有仓库(Nexus)

如何将项目打包部署到私有仓库(Nexus)

作者头像
吴就业
发布2021-07-15 15:06:01
1.6K0
发布2021-07-15 15:06:01
举报
文章被收录于专栏:Java艺术Java艺术

开发个人项目笔者喜欢使用的构建工具是Gradle,所以去年写的这篇《教你如何将开源项目发布到maven中央仓库》介绍的是Gradle工程如何配置将开源项目发布到maven中央仓库。而公司项目使用的是maven,并且不是推送到maven中央仓库,而是推送到私有仓库nexus,本篇将介绍如何将sdk项目打包部署到私有仓库。

其实部署到maven中央仓库也是一样的,只是配置不同。

我们将学习两种配置,一种是一个项目只有一个模块的配置,另一种是一个项目有多个模块且我们只需要推送其中一个模块到私有仓库的配置。

一个项目只有一个模块

通常是公用组件。

在项目(父工程)的pom.xml添加仓库地址配置,如下

<distributionManagement>
    <repository>
        <!-- id随意,maven setting.xml中添加server配置也用到 -->
        <id>nexus</id>
        <name>maven-releases</name>
        <!-- 你们搭建的私有仓库地址 -->
        <url>http://[your private nexus domain]/repository/maven-releases/</url>
    </repository>
</distributionManagement>

在maven settings.xml中添加server配置,如下

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>nexus</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

其中账号、密码为登录Nexus的账号密码,要求有上传权限。

提示:server(settings.xml)的id要与repository(pom.xml)的id相同。

项目打包并推送到Nexus:

一个项目多个模块只部署其中一个模块

通常是业务项目,而需要部署到私有仓库的模块通常是为方便其它微服务调用而封装的SDK模块。

同样也是在项目(父工程)的pom.xml添加仓库地址配置,如下

<distributionManagement>
    <repository>
        <!-- id随意,maven setting.xml中添加server配置也用到 -->
        <id>nexus</id>
        <name>maven-releases</name>
        <!-- 你们搭建的私有仓库地址 -->
        <url>http://[your private nexus domain]/repository/maven-releases/</url>
    </repository>
</distributionManagement>

同样也需要在maven settings.xml中添加server配置,如下

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>nexus</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

使用命令方式推送子模块到nexus如下

mvn clean deploy -pl [子模块名称] -DskipTests
  • -pl: 指定推送的子模块,多个使用','分割,如果全部推送则不指定-pl;
  • -DskipTests:跳过测试;

对于不需要推送到私服仓库的子模块,最好在子模块下添加如下配置

<properties>
    <maven.deploy.skip>true</maven.deploy.skip>
</properties>

提示:如果报错401,说明maven配置文件settings.xml没有配置server或者账号没有权限。

如果是使用idea的maven插件->Lifecycle->deploy推送

  • 1、先配置Preferences -> Build -> Maven 覆盖默认的settings.xml配置文件;
  • 2、在新的settings.xml配置文件中添加server配置;
  • 3、如果只是推送某个子模块,执行子模块的Lifecycle->deploy。

提示:如果子模块的pom.xml依赖了父模块的pom.xml,那么不建议使用此方式,此方式不会将父模块的pom.xml推送到maven。

特别提示

如果使用命令方法deploy,请一定要确保在系统环境变量中指定的maven使用的settings.xml与idea配置的maven使用的settings.xml一致,否则会遇到很多问题,如401。

如果你遇到这种情况,明明在settings.xml中配置了server,结果配置好像没生效,那么你可能遇到的就是配置文件不一致的问题。

  • MAC下~/.base_profile中配置maven环境变量如下
#maven环境变量
MAVEN_HOME=/Users/wjy/JavaApp/apache-maven-3.6.1
export PATH=$PATH:$MAVEN_HOME/bin

则默认使用MAVEN_HOME/conf/settings.xml。

  • IDEA可配置使用的maven以及settings.xml。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java艺术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一个项目只有一个模块
  • 一个项目多个模块只部署其中一个模块
  • 特别提示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档