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

原创 吴就业 116 0 2021-06-27

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/814f80587c804c42a6af87185ccd2992

作者:吴就业
链接:https://wujiuye.com/article/814f80587c804c42a6af87185ccd2992
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

本篇文章写于2021年06月27日,从公众号|掘金|CSDN手工同步过来(博客搬家),本篇为原创文章。

个人项目笔者喜欢使用的构建工具是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:

截屏2021-06-21 19.21.53.png

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

通常是业务项目,而需要部署到私有仓库的模块通常是为方便其它微服务调用而封装的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

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

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

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

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

截屏2021-06-21 19.26.23.png

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

特别提示

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

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

#maven环境变量
MAVEN_HOME=/Users/wjy/JavaApp/apache-maven-3.6.1
export PATH=$PATH:$MAVEN_HOME/bin

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

截屏2021-06-21 19.40.21.png

#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

Java中的中断机制

中断,其实只是jvm用于唤醒因锁竞争、I/O操作、休眠等待被挂起的线程,并设置一个中断标志,我们可以利用这个标志去做一些处理。

https证书如何验证是否生效

在做接入器中间件需求时,接入器需要支持cdn通过https协议回源,测试怎么验证证书有没有生效呢?

新项目从零到一DDD实战思考与总结

本篇笔者以近期的一个项目实战跟大家分享笔者目前对DDD的理解,以及在实战DDD过程中遇到的问题思考与总结,仅个人经验,偏战术设计。

写业务系统,更重要的是设计

写业务系统,我们应该更注重设计,好的设计能解决百分之八十的问题。

Spring Native与WebFlux一样注定昙花一现?

从Spring Native官方文档来看,我是承认它的优秀的,我也会继续关注它,或许将来在合适的项目中去使用它,至少从目前的了解来看,我还不会只为性能买单,一是对现有项目的改造成本略高,二是出于目前项目的成熟度考虑我们还缺少一些云原生组件的支持。

使用Redis实现积分排行榜,并支持同积分按时间排序

使用Redis实现实时更新的排行榜并不难,Redis提供的ZSet数据结构就很适合用于实现排行榜,但如何实现相同积分情况下再支持按时间排序呢?