在Linux环境docker上部署maven私服nexus

时间:2024-05-22 17:32:58
1. docker下载nexus镜像:

docker pull sonatype/nexus

----慢的话可以选择从国内阿里云镜像仓库下载,注册阿里云账号进去就可以获得地址

2. 写一个容器重启运行脚本rebuild.sh如下

docker stop nexus         
docker rm nexus     
docker rmi nexus     
docker build -t nexus .     
docker run -dt -p 10081:8081 --name nexus -v     /home/admin/docker/nexus/nexus-data:/sonatype-work nexus                     

其中-v /home/admin/docker/nexus/nexus-data:/sonatype-work就将nexus的工作目录与前面的目录进行了挂载。 

挂载时,可以会遇到权限不足问题,docker logs  nexus,查看日志中的出错原因,如果是权限原因,将nexus-data文件的权限改为最大,再来重新执行脚本               

查看容器的挂载关系:docker inspect container_name | grep Mounts -A 20  。    

这时通过http://localhost:10081/nexus 就可以访问nexus页面了

3. 密码仓库配置:

页面进去右上角会有登录按钮,默认账号密码为admin/admin123,登录进去右边有Repositories,user等,点击可以看见默认的一些仓库,其中仓库类型会有                  

hosted:宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。                  
proxy:代表代理远程的仓库,最典型的就是Maven官方*仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程*仓库下载依赖,这些*仓库就是proxy。        
group:组仓库,组合了默认的几个库,配置使用的时候配置这一个库地址就可以了


4. 本地使用nexus私服     

   修改maven目录中settings.xml文件,适用于所有项目,其中<servers>需要配置一个id和账号密码,<mirrors>配置仓库的镜像,访问到仓库的时候会先访问镜像,<mirrorOf>配置哪个仓库,*代表所有。

   项目中pom.xml修改
   
```
    <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
    ==maven编译插件,以及指定项目源码的jdk版本,编译后的jdk版本,以及编码==
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
==资源文件过滤插件==
</plugins>
</build>
==如果需要上传jar包到maven远程仓库,需要配置以下==
<distributionManagement>
<repository>
<id>nexus</id>
<name>dragon-plugin-respository</name>
<url>http://101.37.17.123:10081/nexus/content/repositories/releases/</url>
</repository>
==稳定版本==
<snapshotRepository>
<id>nexus</id>
<name>dragon-plugin-snapshots</name>
<url>http://101.37.17.123:10081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
==快照版本(开发阶段,经常改动,不稳定)==
</distributionManagement>
```

5. 网页上传第三方库到maven仓库      

登入nexus,选择第三方的仓库,选择右下方Artifact Upload,选择From POM将pom和jar一起上传,另一个只上传jar包在Linux环境docker上部署maven私服nexus