前言
搭建mavne的私服的好处很多,但是很多初中级程序员都没有亲身搭建过,下来我我来带着大家搭建一个maven私服。本次私服搭建我采用的是Nexus3进行搭建,Nexus3有Linux版本和Windos版本,但是作为一个程序员,我不推荐大家使用Windows。
准备材料:待打包的Maven项目、待测试的Maven项目、Linux服务器(Centos7)、Docker
不会Docker的朋友,请参考:https://blog.csdn.net/lingerlan510/article/details/116448894
注意:服务器可以是阿里云的服务器,但是配置尽量高一点(本人就踩坑了,服务器配置太低Nexus3不能成功运行),也可以是虚拟机
一、安装Nexus
查看镜像
docker search nexus3
拉取镜像
docker pull sonatype/nexus3
查看镜像
[root@localhost nexus-data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sonatype/nexus3 latest 3aa3f8a8fff7 2 weeks ago 668MB
宿主机创建地址
mkdir -p /usr/local/nexus3/nexus-data
创建容器
docker run -id --privileged=true --name=nexus3 --restart=always -p 8081:8081 -v /usr/local/nexus3/nexus-data:/var/nexus-data sonatype/nexus3
查看容器运行状态
[root@localhost nexus-data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d33341130b2 sonatype/nexus3 "sh -c ${SONATYPE_DI…" 2 hours ago Up 2 hours 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp nexus3
STATUS中包含Up说明启动已成功了
测试Nexus
浏览器中输入http://localhost:8081/进行访问,如果出现页面说明安装并启动成功,恭喜你!
注意:如果是在云服务中安装的Nexus需要在防火墙中开发8081端口或者关闭防火墙并且在阿里云的安全组里面开发该端口才可以用http://ip:8081进行访问哟
Nexus的账户名称为admin,密码需要到容器中进行查询:
进入容器内部:
[root@localhost nexus-data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d33341130b2 sonatype/nexus3 "sh -c ${SONATYPE_DI…" 2 hours ago Up 2 hours 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp nexus3
[root@localhost nexus-data]# docker exec -it 9d33341130b2 bash
bash-4.4$ dir
查询admin用户的密码:
bash-4.4$ dir
bin dev help.1 lib licenses media nexus-data proc run srv tmp uid_template.sh var
boot etc home lib64 lost+found mnt opt root sbin sys uid_entrypoint.sh usr
bash-4.4$ more nexus-data/admin.password
e7a42a55-6188-4dea-bad7-3989998f03b5
bash-4.4$
如上图,e7a42a55-6188-4dea-bad7-3989998f03b5即为admin的密码登录成功后,即可自行修改密码。
登录成功,那么就说明已经完全安装成功了,进入下一阶段。
二、Nexus私服配置
查看Nexus私服的地址
将上图中对应的地址复制出来,这个地址就是你对应私服的地址,后面会用到
调整Maven的配置文件settings.xml
添加私服账号信息
<!-- Nexus私服发布的用户名密码 -->
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
注意:密码要进行调整,改成你自己修改的密码,不要粘贴我的哟!
添加私服仓库路径
<!-- Nexus私服配置 -->
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.213.128:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
Maven的Setting.xml文件很多人都了解的不全,我把我的发不出,大家看一下,每个模块都有注释:
<?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">
<!--本地仓库地址-->
<localRepository>D:\soft\Java\repository</localRepository>
<!-- Apache Maven 配置 -->
<pluginGroups></pluginGroups>
<proxies></proxies>
<!-- Nexus私服发布的用户名密码 -->
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- 阿里云镜像 -->
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
<!-- 配置: java8, 先从阿里云下载, 没有再去私服下载 -->
<!-- 测试结果: 影响下载顺序的是profiles标签的配置顺序(后面配置的ali仓库先下载), 而不是activeProfiles的顺序 -->
<profiles>
<!-- 全局JDK1.8配置 -->
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<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>
<!-- Nexus私服配置 -->
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.213.128:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<!-- 阿里云配置: 提高国内的jar包下载速度 -->
<profile>
<id>ali</id>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 激活配置 -->
<activeProfiles>
<activeProfile>jdk1.8</activeProfile>
<activeProfile>dev</activeProfile>
<activeProfile>ali</activeProfile>
</activeProfiles>
</settings>
三、 配置待打包项目的pom文件
项目截图
本次演示的打包项目为一个工具包,目的是把此项目打成jar包上传到私服,然后提供别的项目使用
调整项目的pom.xml文件
该配置可加可不加,不加的话打出来的包里面不会包含注释,添加了则会将注释也打包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
查询快照版本仓库地址并记录:
查询发布版本仓库地址并记录:
配置私服仓库
<distributionManagement>
<!-- 发布版本仓库 -->
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.213.128:8081/repository/maven-releases/</url>
</repository>
<!-- 快照版本仓库 -->
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.213.128:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
解释下这2个版本仓库:
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-RELEASES</version>
如果pom文件中的version标签中是RELEASES则会发布到稳定版本仓库,如果为SNAPSHOT则发布到快照版本仓库中
四、打包项目并上传jar包
打包结果如下说明上传成功:
到Nexus上查看我们所打的包
结果如上图,说明已经打包并上传成功!!!
五、测试上传的jar包
引入私服仓库
<!--私服仓库-->
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.213.128:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.213.128:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
引入自己的jar包
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-RELEASES</version>
</dependency>
</dependencies>
写测试代码
如图,我们通过pom文件把我们自己所打的工具包从私服中下载下来了,并可以正常使用,而且点进去会发现jar包中的注释完好无损哟!
六、小结
这是我第一次搭建这个Maven私服,也花了不少时间,我相信对我以后的工作肯定会有很大的帮助,期间我也踩过坑,大家只要按照我的步骤肯定也会成功的,如果你也成功了,请素质三连哟,谢谢!