nexus

1、nexus介绍

【maven私服】,用于为公司提供私有服务的软件。

它是Sonatype公司的一个产品,叫Nexus,它是Maven的私服。事实上有三种专门的Maven仓库管理软件可以帮助我们创建私服,有Apache的Archiva;JFrog的Artifactory和Sonatype的Nexus。其中Archiva是开源的,Artifactory和Nexus的核心也是开源的。这里我们重点介绍Sonatype公司的Nexus。

2、安装nexus

基于Docker version 20.10.23安装

1、拉取镜像(无需操作)

安装版本:3.36.0

2、创建映射路径

创建如下目录:

 

同时为目录data授权:  

 chmod 777 data

 

3、启动nexus

docker run -d --name nexus3 -p 8081:8081 --restart always -v /usr/local/docker/nexus/data:/nexus-data sonatype/nexus3:3.36.0

 

 

4、访问nexus

 http://宿主机:8081/

 

 

5、查看登录密码

 

输出data下的admin.password,里面是admin的密码。  

 

 【用户名:admin 密码:复制上面的密码】

 

【点击:Next】  

 

【设置新密码:123456】  

 

 【勾选:允许匿名登录,没有账号密码也能访问】

 

 【点击:Finish】

 

 

6、设置仓库

1.创建代理仓库

用来代理aliyun仓库

【1.】

 

 【2.】

 

【3.】  

 

 

http://maven.aliyun.com/nexus/content/groups/public/

【下拉到最后:点击Create repository】

 

 

 

2.创建本地快照仓库

 

 

3.创建发布版仓库

 

 

 

4.创建仓库组

 

 

 

7、修改配置文件

修改maven的setting.xml文件

 

 两个server的id对应了配置的两个hosted仓库名称

<server>
    <id>dz13_RELEASE</id>
    <username>admin</username>
    <password>123456</password>
</server>
<server>
    <id>dz13_SNAPSHOT</id>
    <username>admin</username>
    <password>123456</password>
</server> 

 <!-- 删除阿里云的镜像,用我们自己的nexus地址 -->
<mirror>
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <url>http://192.168.3.43:8081/repository/dz13/</url>
</mirror>

<!-- 配置一套环境 -->
<profile>
    <id>nexus</id>
    <repositories>
        <repository>
            <id>central</id>
            <url>http://192.168.3.43:8081/repository/dz13/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>http://192.168.3.43:8081/repository/dz13/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</profile> 

 <!-- 启用刚才配置的一套环境 -->
<activeProfiles>
     <activeProfile>nexus</activeProfile>  
</activeProfiles>

 【执行一下jenkins,验证一下,修改ali镜像仓库了,是否可行】

 

 

8、maven仓库jar类型

1、快照版

快照版jar是正在开发中的,没有经过大量测试的,是临时用的jar。每次提交jar到nexus会生成一个新的快照,而版本号不会改变,引入依赖时会自动引入最新的快照版本。

2、发布版

经过大量测试,已经完成全流程的jar。这个jar是稳定的,放心引用的。

3、本地开发环境配置

1、项目的pom文件配置

<!--私服配置-->
<distributionManagement>
    <repository>
        <id>my-neuse-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://192.168.3.43:8081/repository/IntelligentNetwork/</url>
    </repository>
    <snapshotRepository>
        <id>my_repo_snapshot</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://192.168.3.43:8081/repository/IntelligentNetwork/</url>
    </snapshotRepository>
</distributionManagement> 

 

 

2、修改当前工作空间下的maven引用

修改本地仓库maven的setting文件,配置方式和虚拟机中相同。【虚拟机中的setting文件修改了啥,本地仓库的setting文件也要改啥】

如果不修改本地仓库的配置文件,连接不到自己的私服,无法拉取私服中自己上传的jar。

 

根据路径找的setting文件后,进行修改。

3、修改本地项目打包插件,同时git提交到gitee仓库里:

 #更换一下项目中的打包插件,同时 上传到gitee仓库里。
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <attach>true</attach>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

 

4、Jenkins上传jar到nexus

1、流水线代码

 node {
    stage('pull code'){
        git branch: 'master', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
    }
    stage('compile'){
        dir('/var/lib/jenkins/workspace/jar_demo01'){
            sh 'mvn clean install'
        }
    }
    stage('upload jar'){
        sh "mvn deploy:deploy-file \
        -DgroupId=org.jsoft \
        -DartifactId=demo-helloworld \
        -Dversion=0.0.1-SNAPSHOT \
        -Dpackaging=jar \
        -Dfile=/var/lib/jenkins/workspace/jar_demo01/target/demo-helloworld-0.0.1-SNAPSHOT.jar \
        -Dsources=/var/lib/jenkins/workspace/jar_demo01/target/demo-helloworld-0.0.1-SNAPSHOT-sources.jar \
        -DpomFile=/usr/local/maven/apache-maven-3.3.9/repository/org/jsoft/demo-helloworld/0.0.1-SNAPSHOT/demo-helloworld-0.0.1-SNAPSHOT.pom \
        -DrepositoryId=dz12_SNAPSHOT \
        -Durl=http://192.168.1.173:8081/repository/dz12_SNAPSHOT/"
    }
}

 

 

第一阶段:从git下载代码

    stage('pull code'){
        git branch: 'master', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
    } 

第二阶段:maven打包

由于最开始用来阿里云镜像,导致和私服产生了冲突,如果不配置私服时可以打包成功,配置私服就失败,可以把本地仓库中的jar删除,重新在私服下拉取依赖。

     stage('compile'){
        dir('/var/lib/jenkins/workspace/jar_demo01'){
            sh 'mvn clean install'
        }
    }

 #更换一下项目中的打包插件,同时 上传到gitee仓库里。
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <attach>true</attach>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

 

第三阶段:上传nexus

注意:Dfile和Dsources不能用本地仓库中的,要用代码下target下的jar。如果用本地仓库会导致自己替换自己的问题,出现报错,无法上传。

    stage('upload jar'){
        sh "mvn deploy:deploy-file \
        -DgroupId=org.jsoft \
        -DartifactId=demo-helloworld \
        -Dversion=0.0.1-SNAPSHOT \
        -Dpackaging=jar \
        -Dfile=/var/lib/jenkins/workspace/jar_demo01/target/demo-helloworld-0.0.1-SNAPSHOT.jar \
        -Dsources=/var/lib/jenkins/workspace/jar_demo01/target/demo-helloworld-0.0.1-SNAPSHOT-sources.jar \
        -DpomFile=/usr/local/maven/apache-maven-3.3.9/repository/org/jsoft/demo-helloworld/0.0.1-SNAPSHOT/demo-helloworld-0.0.1-SNAPSHOT.pom \
        -DrepositoryId=dz12_SNAPSHOT \
        -Durl=http://192.168.1.173:8081/repository/dz12_SNAPSHOT/"
    } 

 配置共有9项,4+3+2

 4个工程自己的配置,这四个对应了pom.xml文件中的配置
-DgroupId
-DartifactId
-Dversion
-Dpackaging(是包的类型,基本都会配置成jar,少数会配置成pom。jar就是一个依赖的jar包,pom是做依赖传递的)
3个要上传的文件
-Dfile:jar包
-Dsources:源码jar包
-DpomFile:.pom文件,做依赖传递
2个私服仓库配置
-DrepositoryId:仓库名称
-Durl:仓库地址

 

 

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值