自学内容网 自学内容网

maven私有镜像仓库nexus部署使用

maven私有镜像仓库nexus部署使用

1、Nexus部署

#查找镜像
docker search sonatype/nexus3
#拉取镜像
docker pull sonatype/nexus3
#持久化目录
mkdir -p /data/nexus/data
chmod 777 -R /data/nexus/data
#启动服务
docker run -d --name nexus3 -p 8081:8081 --restart always -v /data/nexus/data:/nexus-data sonatype/nexus3
#查看日志
docker logs -f nexus3

稍等一下,出现 Started Sonatype Nexus OSS 表示启动好了。

2、Nexus访问

安装完成后可访问管理平台:http://ip:8081,打开浏览器,访问 http://ip:8081/

admin账户登录密码查看

cat /data/nexus/data/admin.password

3、Nexus配置

默认仓库说明

maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用

Nexus仓库类型介绍

hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

4、创建Blob Stores

在创建repository之前,还需要先指定文件存储目录,便于统一管理。就需要创建Blob Stores,不创建则使用的是default

img

img可以看到blob stores有两个,一个是系统默认的,一个是刚创建的。如果不想自己创建,使用系统默认的文件存储目录也是可以的。到时候创建repository时,存储目录选择default就可以了。新创建的目录,可以在/data/blobs/目录下面可以看到。

img

img

5、Nexus仓库

img

如图所示,代理仓库负责代理远程中央仓库,托管仓库负责本地资源,组资源库 = 代理资源库 + 托管资源库

6、创建proxy repository代理仓库

img

选择maven2(proxy),代理仓库

img

设置代理仓库

img

img

img

其他的可以采用默认,以后需要修改的可以再修改。

这里推荐几个远程仓库

jboss的maven中央仓库地址:http://repository.jboss.com/maven2/



阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/



apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/

7、创建hosted repository仓库

Hosted有三种方式:Releases、Snapshot、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的版本
Mixed:混合的

img

img

img

上图的Hosted设置选项,选项中有三个值:

Allow redeploy:允许同一个版本号下重复提交代码, nexus以时间区分
Disable redeploy:不允许同一个版本号下重复提交代码
Read-Only:不允许提交任何版本
原生的maven-releases库是Disable redeploy设置, maven-snapshots是Allow redeploy。

8、创建group repository组仓库

img

img

img

9、maven部署配置

#获取软件包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz --no-check-certificate
tar -zxvf apache-maven-3.9.6-bin.tar.gz
echo "" >>/etc/profile
source /etc/profile
mvn -V
Maven下的setting.xml文件和项目中的pom.xml文件的关系是:settting.xml文件是全局设置,而pom.xml文件是局部设置。pom.xml文件对于项目来说,是优先使用的。而pom.xml文件中如果没有配置镜像地址的话,就按照settting.xml中定义的地址去查找。

如上图方式获取组仓库smart_group的仓库地址,修改setting.xml文件如下:

<!--nexus服务器,id为组仓库name-->
  <servers>  
    <server>  
        <id>custom_group</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>   
  </servers>  
  <!--仓库组的url地址,id和name可以写组仓库name,mirrorOf的值设置为central-->  
  <mirrors>     
    <mirror>  
        <id>custom_group</id>  
        <name>custom_group</name>  
        <url>http://192.168.124.189:8081/repository/custom_group/</url>  
        <mirrorOf>central</mirrorOf>  
    </mirror>     
  </mirrors>

img

img

img

修改后可以重新编译项目,必须添加参数-U,(-U,–update-snapshots,强制更新releases、snapshots类型的插件或依赖库,否则maven一天只会更新一次snapshot依赖)。代理仓库会从远程中央仓库下载jar包

mvn clean compile -U

新建SpringBoot项目,可以查看本地仓库,远程仓库的下载的Jar包

img

img

img这个时候可以看到代理仓库已经从中央仓库下载了项目编译需要的jar包。同样地,在组仓库中也能看到所有的jar包,包括代理仓库和宿主仓库的。

img

10、管理平台上传三方jar包

有些jar是第三方提供的,在中央仓库中是没有的,我们可以上传这些本地三方jar包到hosted repository宿主仓库中。

img

img

上传成功后,就可以看到hosted repository和group repository中已经有了刚上传的三方jar包

img

img

然后项目中通过编译打包就可以下载jar包到本地repository中了,记住maven clean、compile、package首次执行时加参数-U。

img

11、命令上传三方jar包

在setting.xml配置文件中添加hosted repository server

<!--id自定义,但是在使用命令上传的时候会用到-->
<server>  
    <id>custom_hosted</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>

使用如下命令上传jar包:

mvn deploy:deploy-file -DgroupId=byd.ghy -DartifactId=portal-auth -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\workspace_byd\workspace_ghy\workspace_portal-backend\portal-backend-jar-v2\target\auth-server.jar -Durl=http://192.168.124.189:8081/repository/custom_hosted/ -DrepositoryId=custom_hosted
 
命令解释:
-DgroupId=byd.ghy                         自定义
-DartifactId=portal-auth                  自定义
-Dversion=1.0.0                     自定义,三个自定义,构成pom.xml文件中的标识
-Dpackaging=jar                    传的类型是jar类型
-Dfile=D:\auth-server.jar                jar包的本地磁盘位置
-Durl=http://ip:8081/repository/custom_hosted/   hosted资源库的地址
-DrepositoryId=custom_hosted             需要和setting.xml文件中配置的ID一致

例如:
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=./cloudx-common-basics-2.0.2-SNAPSHOT.jar -DgroupId=com.risit.chk -DartifactId=risit-chk-common -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -DrepositoryId=nexus-snapshots -Durl=http://10.10.111.222:8081/repository/nexus-snapshots/
      
mvn deploy:deploy-file -Dfile=cloudx-center-2.0.2-SNAPSHOT.pom -DgroupId=com.cloudx -DartifactId=cloudx-center -Dversion=2.0.2-SNAPSHOT -Dpackaging=pom -DrepositoryId=nexus-snapshots -Durl=http://10.10.111.222:8081/repository/nexus-snapshots/

img

上传成功后,hosted repository中已经可以看到了

img

12、deploy部署jar包到私服

release和snapshots jar包区别

SNAPSHOT版本代表不稳定(快照版本),还在处于开发阶段,随时都会有变化。
当上传同样的版本号jar包的时候,SNAPSHOT会在版本号的后面自动追加一串新的数字,即日志标签,
nexus会根据日志标签区分出不同的版本,在maven引用时,如果使用的是snapshot版本,
重新导入maven的时候,会去私库拉取最新上传的代码。
 
RELEASE则代表稳定的版本(发布版本),一般上线后都会改用RELEASE版本。
也就是说1.02.0这样的版本只能有一个,也就是说当前版本号下,不可能出现不同的jar。

创建snapshot仓库

可以在nexus上添加一个snapshot仓库,专门用于存放snapshot版本的jar包。snapshot仓库也是hosted类型的,创建方式和hosted repository类型。创建好后,加入到组仓库里面就可以了。

img

一定要选择Deployment Policy为allow redeploy

img

img

同样的操作,创建Release类型的仓库,并加入到组中

img

13、项目pom.xml文件配置

可以在项目的pom文件中设置具体的relaeses库和snapshots库。如果当前项目的版本号的后缀名中带着-SNAPSHOT,类似***-SNAPSHOT,就会将项目jar包提交到snapshots库中,没有带-SNAPSHOT的话会提交releases库中。

在pom.xml文件中配置 distributionManagement 节点如下,在项目中执行deploy命令后,jar包将会被上传到nexus中。

setting.xml中配置

<server>  
    <id>custom_snapshots</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>
<server>  
    <id>custom_releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>

pom.xml配置

    <repositories>
        <repository>
            <id>custom_group</id>
            <name>Nexus Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>custom_group</id>
            <name>Nexus Plugin Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
<!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件jar等部署到远程仓库。 -->
    <distributionManagement>
        <repository><!--部署项目产生的构件到远程仓库需要的信息 -->
            <id>custom_releases</id><!-- 此处id和settings.xml的id保持一致 -->
            <name>Nexus Release Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_releases/</url>
        </repository>
        <snapshotRepository><!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
            <id>custom_snapshots</id><!-- 此处id和settings.xml的id保持一致 -->
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

默认地,maven编译打包不会下载SNAPSHOT版本的jar包,所以还需要在pom.xml文件中配置支持下载snapshot版本jar包。

mvn clean deploy -Dmaven.test.skip=true

img

img

img

img

img

img

至此,nexus搭建完毕,支持本地部署依赖jar包!!!

14、问题排查

1、nexus.log日志中报错内容如下:

UNKNOWN com.sonatype.nexus.plugins.outreach.internal.outreach.SonatypeOutreach - Could not download page bundle
java.net.SocketException: Network is unreachable (connect failed)

img

解决方法:

a) 访问Nexus管理站点,我这里是 http://192.168.124.184:8081,进入后,用管理员帐号登录。

b)点击 下图中上面的按钮,然后选择左侧Capabilities,然后点击右侧的 Outreach:Management

img

c)点击【disable】按钮,关闭Outreach服务

img

或者给Outreach设定新的URL,可以在标签页 Settings 中的 Override Outreach Content URL项中设定。Nexus支持的URL有如下三个:

  • http://links.sonatype.com and https://links.sonatype.com
  • http://download.sonatype.com and https://download.sonatype.com
  • http://sonatype-download.global.ssl.fastly.net and https://sonatype-download.global.ssl.fastly.net

原文地址:https://blog.csdn.net/qq_23435961/article/details/140349927

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!