一篇文章搞定maven私服部署,使用,上传自己的jar包到私服

一、为什么需要maven私服

几乎所有的公司都会有自己的maven私服,我觉得有以下几点原因:

  1. 为了共享,管理,自己的包依赖,因为一般公司都会开发自己的服务,各个服务器都会相互依赖,这个时候就需要把jar依赖,上传到一个公共的地方,供各个项目使用。
  2. 为了代码安全,自己公司开发的东西肯定不想让其他知道,如果你上传到公服(阿里云等)则会造成 代码泄漏的风险,且管控权也不在自己这边。
  3. 公司没有外网,只能自己搭建maven私服。

二、搭建过程

本文搭建以 windows为例: 环境:

  1. windows 11
  2. jdk1.8
  3. Nexus Repository OSS nexus-3.14.0-04-win64.zip [下载地址](Download Archives - Repository Manager 3 (sonatype.com)) 或者百度云:链接: pan.baidu.com/s/1iPJ4O2P4… 提取码: cqbi

2.1 准备好环境和工具包

将下载的nexus-3.14.0-04-win64.zip解压到自定义目录即可。 打开zip解压文件下的 ../nexus-3.14.0-04-win64/nexus-3.14.0-04/etc/nexus-default.properties。 如下属性可以自定义修改。

  • application-host : Nexus服务监听的主机
  • application-port: Nexus服务监听的端口,
  • nexus-context-path : Nexus服务的上下文路径

通常可以不做任何修改,但个人习惯于修改 application-host 为127.0.0.1(关于0.0.0.0与127.0.0.1的区别自行检索)

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
#
# additional vmoptions needed for Java9+
#
# --add-reads=java.xml=java.logging
# --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# --patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.9.jar
# --patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.9.jar
# --add-opens=java.base/java.security=ALL-UNNAMED
# --add-opens=java.base/java.net=ALL-UNNAMED
# --add-opens=java.base/java.lang=ALL-UNNAMED
# --add-opens=java.base/java.util=ALL-UNNAMED
# --add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
# --add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
#
-Djava.endorsed.dirs=lib/endorsed
复制代码

2.2、nexus的安装

在.../nexus-3.14.0-04-win64/nexus-3.14.0-04/bin 目录下,以管理员身份运行cmd 

  1. nexus.exe /run 命令可以启动nexus服务(官方参考文档

  2. 安装nexus本地服务来启动(推荐使用这种方式,官方参考文档),命令如下所示。

//安装nexus服务     nexus 是服务名,可自行定义
nexus.exe /install nexus 
复制代码
//启动nexus服务     nexus 是服务名
sc start nexus 
复制代码
//关闭nexus服务    
sc stop nexus
复制代码
//查看nexus服务 状态   
sc query nexus
复制代码

2.3 nexus登录

nexus的默认admin登录密码登录地址默认是放在 如下目录的 admin.password 文件中的

...\nexus-3.29.2\sonatype-work\nexus3\admin.password
复制代码

第一次登录以后会强制你修改密码,修改以后这个文件就没了。

三、nexus简单介绍

3.1 仓库类型

默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。

仓库名 作用
hosted(宿主仓库库) 存放本公司开发的jar包(正式版本、测试版本)
proxy(代理仓库) 代理中央仓库、Apache下测试版本的jar包
group(组仓库) 使用时连接组仓库,包含Hosted(宿主仓库)和Proxy(代理仓库)
virtual (虚拟仓库) 基本用不到,重点关注上面三个仓库的使用

image.png

3.2自定义仓库

  1. 自定义一个阿里云maven仓库

image.png

  1. 自定义一个聚合maven组仓库

image.png

四、项目中使用自己的私服

4.1 方法一、修改maven 的setting文件

<?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">
        
    <!--本地仓库地址-->    
    <localRepository>D:\repository</localRepository>  
    
    <!--maven私服认证配置,便于上传jar包和下载maven依赖-->
    <servers>
        <server>
            <id>local-maven-releases</id>
            <username>admin</username>
            <password>123456</password>
        </server>
        <server>
            <id>local-maven-snapshots</id>
            <username>admin</username>
            <password>123456</password>
        </server>
    <servers>
    
    <!--配置使用私服--->
    
    <profiles>
        <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>release</id>
                    <url>http://127.0.0.1:8081/repository/maven-releases/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy> 
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
		<repository>
                    <id>snapshot</id>
                    <url>http://localhost:8081/repository/maven-snapshots/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy> 
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>release</id>
                    <url>http://127.0.0.1:8081/repository/maven-releases/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>

                <pluginRepository>
                    <id>snapshot</id>
                    <url>http://localhost:8081/repository/maven-snapshots/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>
复制代码

4.2 方法二、修改项目的pom文件

<!-- 发布jar包时需要有的maven私服配置 -->
<distributionManagement>
    <repository>
        <!--id要和setting文件中server节点中配置的一样-->
        <id>local-maven-releases</id>
        <name>maven-releases</name>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <!--id要和setting文件中server节点中配置的一样-->
        <id>local-maven-snapshots</id>
        <name>maven-snapshots</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

<!--设置从私服下载-->
<repositories>
    <repository>
        <id>maven-all</id>
        <url>http://localhost:8081/repository/maven-all/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
复制代码

五、发布jar包到私服中

5.1 首先在maven的setting文件中增加如下配置

    <!--maven私服认证配置,便于上传jar包和下载maven依赖-->
    <servers>
        <server>
            <id>local-maven-releases</id>
            <username>admin</username>
            <password>123456</password>
        </server>
        <server>
            <id>local-maven-snapshots</id>
            <username>admin</username>
            <password>123456</password>
        </server>
    <servers>

复制代码

5.2 在项目的pom文件中增加如下配置:

<!--sdk的maven坐标 ,默认version以SNAPSHOT结尾的会发布到 maven-snapshots,其余的都发布到maven-releases中-->

<groupId>com.ratel</groupId>
<artifactId>open-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>

<!-- 发布jar包时需要有的maven私服配置 -->
<distributionManagement>
    <repository>
        <!--id要和setting文件中server节点中配置的一样-->
        <id>local-maven-releases</id>
        <name>maven-releases</name>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <!--id要和setting文件中server节点中配置的一样-->
        <id>local-maven-snapshots</id>
        <name>maven-snapshots</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>
复制代码

5.3 发布jar包到仓库

在idea中点击 deploy部署即可。 image.png

然后就可以在maven私服中查看:

image.png

猜你喜欢

转载自juejin.im/post/7048958836928937991