跳转到内容

附录 02 统一管理依赖

为了更好的各个版本的依赖,我们搭建一个nexus私服,然后创建一个项目,配置好所有的依赖版本后,上传私服,然后让所有的模块都以这个模块父模块进行依赖,这样就达到所有的依赖的版本管理的目的。这也是spring官方starter的制作过程。

实际的本地开发过程中,可以不用搭建nexus私服。不过本篇文章可以带你体验一下官方Spring的Starter的制作过程。

1. 安装并配置 nexus3

1.1. 安装

docker pull sonatype/nexus3

mkdir -p /mydata/nexus/data
chmod 777 -R /mydata/nexus

docker run -d --name nexus -p 8081:8081 \
--restart always \
-v /mydata/nexus/data:/nexus-data sonatype/nexus3

docker logs -f nexus

1.2. 配置

安装完成之后,需要对 nexus 进行一些初始化配置。

1.2.1. 修改 admin 的密码
cat /mydata/nexus/data/admin.password

登录页面后修改密码: root1003

1.2.2. web页面上配置用于上传自定义包的用户
  • 创建角色

  • 创建用户

2. 配置maven的config


<server>
    <id>maven-public</id>
    <username>zeanzai</username>
    <password>root1003</password>
</server>
<server>
    <id>maven-releases</id>
    <username>zeanzai</username>
    <password>root1003</password>
</server>
<server>
    <id>maven-snapshots</id>
    <username>zeanzai</username>
    <password>root1003</password>
</server>

    <mirror>
    <id>maven-public</id>
    <name>maven-public</name>
    <url>http://192.168.1.150:8081/repository/maven-public/</url>
    <mirrorOf>*</mirrorOf>
</mirror>

<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>

3. 项目pom文件中的配置

<distributionManagement>
    <repository>
        <id>maven-releases</id>
        <url>http://192.168.1.150:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <url>http://192.168.1.150:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注意此处的id要与maven中的server中的id保持一致。

4. deploy——部署到私服

  • 在maven的窗口中,找到“create..”:

  • 在打开的窗口中输入 clean deploy -DskipTests

  • 运行命令,发布到nexus私服上:

  • 运行结果:

5. 其他模块中的引用

在其他模块中统一引用我们自定义的starter依赖,这样就能进行统一的依赖的版本管理了。

<parent>
    <groupId>com.tianqingxiaozhu</groupId>
    <artifactId>tianqingxiaozhu-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

6. 特别说明

在团队中一般是团队中的重要成员才有推送到私服的权限,因此在实际的开发过程中普通程序员是不需要创建私服的。各位读者在实践过程中,也可以直接创建一个模块,然后把这个模块安装到本地仓库后,在其他模块中引入对应坐标即可。

7. SpringCloud的版本

分为很多个组件,每一个组件都有自己的版本坐标,这个也很好理解,SpringCloud是一个大型的工程,在这个工程里面有很多组件,每一个组件都是由一个小团队负责交付,由于负责不同的组件的团队不同,所以组件的交付时间节点肯定不一样,所以SpringCloud有一个自己的版本,这个版本中每一个组件的版本是不同的。

7.1. SpringCloud-Alibaba的版本

SpringCloud-Alibaba是基于SpringBoot开发的,也是有不同的组件组成的。

因此二者有一个对应关系。

7.2. 对应关系

我们选取的版本如下:

  • JDK1.8
  • CentOS7.9
  • SpringBoot-2.2.5.RELEASE
  • SpringCloud-Hoxton.SR3
  • SpringCloudAlibaba-2.2.1.RELEASE
  • Nacos1.2.1
  • Seata1.3.0
  • Sentinel1.7.1
  • ...

7.3. 创建服务模块的方法

项目使用idea中的 Spring Initializer 进行生成。这样做的好处是当团队规模较大,并且每一个团队都负责一个模块时,可以让不同的团队只需要下载自己负责的模块代码即可,便于代码权限的管理

make it come true