Maven私服搭建_基于Nexus
在微服务系统中,服务被拆分成若干个项目,而这些子项目都有一个共同的父项目,以使用公共依赖
,搭建子项目只需继承父项目的依赖即可。而这些公共依赖
需要上传到一个在线Maven私服,子项目在构建时就能成功引入公共依赖
。Maven私服的还具有节省带宽,加快Maven构建速度等优点。
其实我们个人下载的Maven软件,其中的settings.xml文件就被很多人替换过,因此使用的远程仓库并非Apache的,而是Alibaba提供的远程仓库,因此我们搭建Maven私服也算是一种俄罗斯套娃🤣
下载sonatype nexus repository manager
https://help.sonatype.com/repomanager3/product-information/download // 选择Unix archive,如果你准备安装在Linux服务器上。
利用Xftp将压缩包上传至Linux指定路径。解压,得到两个文件夹nexus和sonatype-work
先在/sonatype-work/nexus3路径下找到admin.password文件,这是登录的默认密码
然后在/nexus/bin路径下./nexus run
启动Nexus,启动成功后,浏览器访问
http://<服务器ip>:8081
admin + 默认密码登录,第一次登录就会让你修改密码,修改后的密码最好还是在/sonatype-work/nexus3路径下保存备份,后面settings.xml文件会用到
- 创建一个私服仓库,选择“Maven2 (hosted)”作为仓库类型。填写仓库名称和其他相关信息,然后保存。
- 创建一个代理仓库,以便从中央Maven仓库等远程仓库代理下载依赖项。选择“Maven2 (proxy)”作为仓库类型,并填写相关信息(将remote repository配置为阿里镜像仓库)。保存代理配置。
至此,Maven私服搭建成功!构建Maven时,会先从私服仓库寻找依赖,未果,由代理仓库根据remote repository地址寻找依赖。
现在到你的Maven安装路径比如C:\dev\apache-maven-3.9.3\conf找到settings.xml文件,复制一份,修改其内容:1、将阿里镜像替换成你的私服镜像。2、配置私服账号密码权限。
<!-- 配置私服镜像仓库 -->
<mirror>
<id>ashe</id>
<mirrorOf>maven-central</mirrorOf>
<url>http://服务器ip:8081/repository/private-maven/</url>
</mirror>
<!-- 配置连接权限 -->
<server>
<id>ashe</id>
<username>admin</username>
<password>修改后的密码</password>
</server>
现在我们可以使用这份new-settings.xml文件来构建微服务的父项目了。新建一个project,删除所有文件仅保留pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ashe</groupId>
<artifactId>base</artifactId>
<!-- 不允许上传SNAPSHOT快照版本 -->
<version>1.0.0</version>
<name>spring-cloud</name>
<description>For Study SpringCloud Alibaba</description>
<!-- Maven打包为pom而非jar -->
<packaging>pom</packaging>
<properties>
<!-- java -->
<java.version>17</java.version>
<!-- Spring Cloud Alibaba -->
<spring.cloud.alibaba.version>2022.0.0.0-RC2</spring.cloud.alibaba.version>
<!-- Spring Cloud -->
<spring.cloud.version>2022.0.0</spring.cloud.version>
<!-- Spring Boot -->
<spring-boot.version>3.0.2</spring-boot.version>
</properties>
<!-- dependencyManagement管理依赖后,子模块的pom.xml若想要集成父工程的依赖,必须显式地申明 -->
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</build>
<distributionManagement>
<!-- mvn deploy 上传到指定仓库(Maven私服) -->
<repository>
<!-- 这里的id要与你settings.xml文件中保持一致 -->
<id>ashe</id>
<url>http://服务器ip:8081/repository/private-maven/</url>
</repository>
</distributionManagement>
</project>
mvn clean mvn deploy
可以看到公共依赖已经上传到Maven私服了。
这时再创建子工程,在pom.xml中继承父工程的公共依赖即可,构建成功,运行成功。
然而,Alibaba已经给你准备好了免费的私服Maven仓库,根据官网提示使用即可
https://packages.aliyun.com/maven