因为需要在公司内部项目间分享一些私有的Jar包,采用Maven管理是最好的方式。这里主要描述如何基于nexus的docker来进行。
执行如下命令:
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
访问:http://ip:18081/nexus 使用默认管理员身份登录,帐号:admin 密码:初始密码在/data/nexus-data/admin.password 内,登录后需要修改密码。
从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:中央仓库
选择添加maven2的代理
添加代理设置cache
设置maven-public 将这些代理加入Group,最好将默认的maven库放到最底下
Nexus安装后自带maven-releases,maven-snapshots两个仓库,用于将生成的jar包发布在这两个仓库中,在实际开发中需要将maven-releases设置为可以重复发布
设置 节点
设置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>
如下命令:
#!/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.Wang原创文章,转载无需和我联系,但请注明来自lokie博客http://lokie.wang