Docker 搭建maven私服

Docker 镜像docker-nexus3

1.创建data volume,用来持久化容器中的数据,保证容器删除重建后私服中的数据仍然存在

$ docker volume create --name nexus-data


2.启动nexus

$ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3


3.启动完成后可以通过host的ip:8081访问

[img]http://dl2.iteye.com/upload/attachment/0122/4825/1230b7a6-b09f-35ca-a766-e7f239600953.png[/img]

其中 [list]
[*]maven-central是个代理仓库,当我们需要的依赖在私服上不存在时,此仓库会直接从maven中央仓库中下载,并缓存到私服里面
[*]maven-public是一个仓库组,里面包含maven- releases和maven- snapshots以及maven-central,我们自己新创建的仓库需要加入到maven-public这个group中,这样使用这个私服的人只用配置一个maven-public的mirror就可以用私服里面的所有依赖
[*]maven-releases和maven-snapshots分别对应着发布版和快照版
[/list]

4.nexus默认用户是 admin/admin123,建议启动后修改密码,创建一个专门给开发人员用的用户,分给可以read、browse所有仓库的权限

5.使用maven私服
为了开发者的所有项目都自动采用搭建好的私服,需要在 .m2目录下追加如下配置文件



<?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>public</id>
<username>dev</username>
<password>dev222</password>
</server>
</servers>

<mirrors>
<mirror>
<id>public</id>
<mirrorOf>central</mirrorOf>
<name>internal nexus repository</name>
<url>http://IP:Port/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-1.8</id>

<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<id>snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>public</id>
<url>http://IP:PORT/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
</settings>



注意dev是新创建的用户,此用户只有浏览,读取私服上依赖jar包的权限,对于需要上传文件到私服上的用户,需要用下面的配置
在.m2下的setting.xml文件的<servers>tag中追加如下配置段

<server>
<id>xxxxx-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>xxxxx-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

其中xxxx-releases和xxxxx-snapshots是自己新创建的maven仓库,并且设置成可上传模式
上传到私服有两种格式
1.通过pom.xml上传
在项目对应pom.xml 文件,追加如下配置段

<distributionManagement>
<repository>
<id>xxxxx-releases</id>
<name>xxxxx-releases</name>
<url>http://IP:Port/repository/xxxxx-releases/</url>
</repository>
<snapshotRepository>
<id>xxxxx-snapshots</id>
<name>xxxxx-snapshots</name>
<url>http://IP:Port/repository/xxxxx-snapshots/</url>
</snapshotRepository>
</distributionManagement>

[b]此处配置的id需要和setting.xml中server的id保持一致[/b],之后就可以在工程目录下执行mvn deploy,将jar发布到私服的仓库中,jar以snapshots结尾的会自动发布到xxxxx-snapshots里面,没有的会直接发布到xxxxx-releases中

2.利用命令行上传第三方jar

mvn -X deploy:deploy-file -DgroupId=com.chengf -DartifactId=test -Dversion=1.0.0 -Dpackaging=jar -Dfile=test.jar -Durl=http://IP:Port/repository/xxxxx-releases/ -DrepositoryId=xxxxx-releases

[b]此处的repositoryId需要和setting.xml中server的id保持一致[/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值