@TOC




1.Nexus是什么

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。我们可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。

2.Nexus和Maven私服原理

解释:Nexus就是Maven的私服仓库,一般大一点的公司都已自己的私有Maven库

1、我们从项目实际开发来看一些无法从外部仓库下载的组件(自定义的组件,未开源),例如内部的项目还要用的,这样我们就可以署到私服上,以便供其他依赖项目使用。

2、为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的负荷。

docker配置maven环境变量_maven

3.什么场景用Maven私服呢?

1.在实际开发中,项目中可能会用到第三方的jar、内部通讯的服务接口都会打入到公司的私服中。

2.自定义的jar包,或者SpringBoot的pom包,一些自己封装好的包打包到私有Maven中去,只供自己或者朋友使用(就比如你封装了个非常强大的代码自动生成器,或者微信和支付宝支付的封装,只需要稍微的配置就可以使用,这时你就可以打包到Maven私服中去,下次直接在pom或xml文件配置坐标就行了,只给自己或者公司或者朋友使用)

4.基于Docker搭建Nexus构建Maven私服

1.下载nexus3的镜像

一定要是搭建了Docker的Linux环境哟,不知道的可以看我之前位置

输入:
docker pull sonatype/nexus3
复制代码

docker配置maven环境变量_docker配置maven环境变量_02

2.使用镜像启动一个容器

注:将容器内部/var/nexus-data挂载到主机/root/nexus-data目录(8081:8081是Linux与Docker的端口映射)
docker run -d -p 8081:8081--name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3 
复制代码

docker配置maven环境变量_Docker_03

3.登录Maven私服

关闭防火墙,访问http://ip:8081 Maven私服启动容器稍微比较慢,等待一会即可。

注:默认账号密码为admin/admin123

docker配置maven环境变量_maven_04

妈耶,进不去,算了改密码吧

docker配置maven环境变量_Docker_05

4.修改初始密码,登录Maven私服

用户名或密码不正确,这个时候我们可以去admin.password文件中去看初始密码。

输入:(找到密码文件)
find / -name 'admin.password'
复制代码

docker配置maven环境变量_docker配置maven环境变量_06

输入:
cat 输入上面查找的文件位置获取密码
复制代码

docker配置maven环境变量_maven_07

那一串乱七八糟的就是密码。那他的登陆进去修改密码

再次登录,登录进去后他会默认让你修改用户名密码,注意俩个都是打新密码

docker配置maven环境变量_maven_08

一直下一步就好了

5.创建Maven私服

1.创建Maven总库

docker配置maven环境变量_Docker_09

docker配置maven环境变量_上传_10

docker配置maven环境变量_Docker_11

点击蓝色的创建就ok啦

2.创建Maven存储库

点击设置界面,选择Repositories,点击Create repository,如下图所示:

docker配置maven环境变量_docker配置maven环境变量_12

选择仓库类型,这里Maven有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择Maven(hosted),如下图:

docker配置maven环境变量_Docker_13

这里的仓库选择正确哟

docker配置maven环境变量_maven_14

输入了name,选择好了Storage,后移到底下选择创建

docker配置maven环境变量_docker配置maven环境变量_15

出现如图

docker配置maven环境变量_docker配置maven环境变量_16

已成功,忽略地下的docker为什么很慢的不一样,docker是之前创建的

6.Java项目构建jar包上传至Maven私服

1.修改本地settings.xml

使用idea找到settings.xml

docker配置maven环境变量_上传_17

docker配置maven环境变量_docker配置maven环境变量_18

2.将其打开找到的setting.xml

docker配置maven环境变量_docker配置maven环境变量_19

在server标签里面加上你登录maven私服的用户名密码

有可能这个文件会有很多注释,忽略就好了,我截的屏没有

docker配置maven环境变量_上传_20

3.配置项目的pom文件

在pom里面添加

docker配置maven环境变量_maven_21

<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE -->
    <!--指定仓库地址 -->
    <distributionManagement>
        <repository>
            <!--此名称要和.m2/settings.xml中设置的ID一致 -->
            <id>boot-tool</id>
            <!--上传的位置-->
            <url>http://120.77.0.58:8081/repository/boot-tool/</url>
        </repository>
    </distributionManagement>

    <build>
        <plugins>
            <!--发布代码Jar插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <!--发布源码插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
复制代码

上传的位置记得要改,改成私有maven仓库的位置私有仓库位置在:

docker配置maven环境变量_maven_22

docker配置maven环境变量_docker配置maven环境变量_23

4.打包上传

在ider底下点击Terminai

输入:mvn deploy

docker配置maven环境变量_maven_24

等待一会就上传成功了

docker配置maven环境变量_docker配置maven环境变量_25

网页访问自己的上传位置看看

docker配置maven环境变量_maven_26

docker配置maven环境变量_Docker_27

已成功

docker配置maven环境变量_docker配置maven环境变量_28

7.测试从Maven私服使用jar包

如何引用呢,我这里创建了一个空的Maven项目

对比一下俩张图,只需在pom文件类要把name,id,版本对应,在引用远程仓库地址即可使用

docker配置maven环境变量_上传_29

docker配置maven环境变量_Docker_30

代码

<dependencies>
        <dependency>
            <groupId>com.lijie</groupId>
            <artifactId>lijie-core-boot</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>mayikt</id>
            <url>http://120.77.0.58:8081/repository/boot-tool/</url>
        </repository>
    </repositories>
复制代码

这就是我引入的jar包

docker配置maven环境变量_maven_31