基于Docker使用Nexus搭建私有maven仓库

因为需要在公司内部项目间分享一些私有的Jar包,采用Maven管理是最好的方式。这里主要描述如何基于nexus的docker来进行。

1. 安装

执行如下命令:

docker pull docker.io/sonatype/nexus3
docker run -tid -p 18081:8081 --name nexus-mvn  -e NEXUS_CONTEXT=nexus - v /data/nexus-data:/nexus-data docker.io/sonatype/nexus3 

2. 配置

2.1 登录

访问:http://ip:18081/nexus 使用默认管理员身份登录,帐号:admin 密码:初始密码在/data/nexus-data/admin.password 内,登录后需要修改密码。

2.2 设置

从Repositories 中可以看到所有的仓库,搭建好的Nexus,默认会带有一些maven仓库,一般使用这些仓库就足够了。

默认仓库说明
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中使用。

仓库类型
Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots, Central,当然你也可以自己设置。 Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件 Snapshots:本地项目的快照仓库 Releases: 本地项目发布的正式版本 Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库 Central:中央仓库

2.3 增加新的代理源


选择添加maven2的代理

添加代理设置cache

设置maven-public 将这些代理加入Group,最好将默认的maven库放到最底下

Nexus安装后自带maven-releases,maven-snapshots两个仓库,用于将生成的jar包发布在这两个仓库中,在实际开发中需要将maven-releases设置为可以重复发布

3. mvn配置使用Nexus

3.1 修改maven setting.xml文件配置

设置 节点
设置Server:

<servers>
    <server>
        <id>macco-nexus</id>
        <username>admin</username>
        <password>Kitche931743</password>
    </server>
</servers>

设置Profile
这个不用写在setting.xml文件里,可以卸载pom里面用来区分具体的环境,比如Dev下用snap,其他用release之类

<profiles>

<profile>
  <id>dev</id>
  <repositories>
    <repository>
      <id>nexus</id>
      <name>Public Repositories</name>
      <url>http://ip:8081/repository/maven-public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>

    <repository>
      <id>central</id>
      <name>Central Repositories</name>
      <url>http://ip:8081/repository/maven-central/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

    <repository>
      <id>release</id>
      <name>Release Repositories</name>
      <url>http://ip:8082/repository/maven-releases/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

    <repository>
      <id>snapshots</id>
      <name>Snapshot Repositories</name>
      <url>http://ip:8082/repository/maven-snapshots/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>plugins</id>
      <name>Plugin Repositories</name>
      <url>http://ip:8081/repository/maven-public/</url>
    </pluginRepository>
  </pluginRepositories>
</profile>

</profiles>

添加活跃profile

<activeProfiles>

<activeProfile>dev</activeProfile>

</activeProfiles>

3.2 发布私有jar包

如下命令:

#!/usr/bin/env bash
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=target/client-0.0.1-SNAPSHOT.jar -DgroupId=com.imacco.infrastructure.apigateway -DartifactId=client -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://maven.imacco.com/nexus/repository/maven-snapshots/

或者配置pom.xml 简化上传

<distributionManagement>

<repository>
    <id>releases</id>
    <name>Nexus Release Repository</name>
    <url>http://ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
    <id>snapshots</id>
    <name>Nexus Snapshot Repository</name>
    <url>http://ip:8081/repository/maven-snapshots/</url>
</snapshotRepository>

</distributionManagement>

Lokie博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.1 搭建 © 2014-2018 lokie.wang 版权所有 ICP证:沪ICP备18016993号
  • 联系邮箱:kitche1985@hotmail.com