项目架构调整,切换版本并发布到中央仓库
文章目录
- 0.完成运维篇maven发布到中央仓库的部分
- 1.配置server到settings.xml
- 2.配置gpg
- 1.架构调整
- 1.sunrays-dependencies(统一管理依赖和配置)
- 1.作为单独的模块
- 2.填写发布到中央仓库的配置
- 1.基础属性
- 2.基本配置
- 3.插件配置
- 3.完整的pom.xml
- 2.sunrays-framework(统一管理子模块)
- 1.继承sunrays-dependencies
- 2.发布基本配置
- 3.完整的pom.xml
- 3.其余模块都继承sunrays-framework,如果需要发布,则需要填写发布基本配置
- 2.切换版本并发布到本地仓库
- 1.修改sunrays-dependencies的版本为0.0.6
- 2.修改sunrays-framework继承的版本也为0.0.6
- 3.将sunrays-dependencies模块发布到本地仓库,直接clean install
- 4.sunrays-framework 下使用maven 插件统一切换版本为0.0.6
- 5.按照以下顺序发布到本地仓库
- 1.sunrays-framework 只发布父模块
- 2.sunrays-common 直接clean install
- 3.sunrays-common-cloud 直接clean install
- 4.sunrays-combinations 直接clean install
- 5.sunrays-common-demo 直接clean install
- 6.sunrays-combinations-demo 直接clean install
- 7.最后sunrays-framework再clean install一下
- 3.发布到远程仓库
- 1.sunrays-dependencies 直接发布 mvn clean deploy
- 2.点击publish(一定要等到变绿再进行下一步!!!)
- 3.sunrays-framework 单独发布 mvn clean deploy -N
- 4.依然点击publish(一定要等到变绿再进行下一步!!!)
- 5.发布sunrays-common-cloud模块,直接发布即可
- 6.发布sunrays-common模块,也是直接发布
- 7.全部发布后,点击Publish,等待变绿
- 4.测试使用
- 1.新建一个Maven项目
- 2.在pom中直接使用sunrays-dependencies进行依赖管理
- 3.引入依赖
- 4.application.yml 配置日志存储根目录默认./logs
- 5.SunraysApplication.java 启动类
- 6.编写controller
- 7.测试,自动打印出参入参
0.完成运维篇maven发布到中央仓库的部分
1.配置server到settings.xml
<!-- 发布到maven的中央仓库的server --><server><id>sonatype</id><username>username</username><password>password</password></server>
2.配置gpg
1.架构调整
1.sunrays-dependencies(统一管理依赖和配置)
1.作为单独的模块
<groupId>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.5</version>
2.填写发布到中央仓库的配置
1.基础属性
<!-- 项目名 --><name>${project.groupId}:${project.artifactId}</name><!-- 简单描述 --><description>统一管理依赖,本项目的所有模块都要直接或者间接的继承该模块</description><!-- 开源地址 --><url>https://gitee.com/qyxinhua_0/sunrays-framework/tree/master/sunrays-dependencies</url>
2.基本配置
<!-- 发布到Maven中央仓库需要的配置1 --><!-- 开源协议 --><licenses><license><name>MIT License</name><url>http://www.opensource.org/licenses/mit-license.php</url></license></licenses><!-- 开发者配置 --><developers><developer><name>sxs</name><email>xxxx@126.com</email><!-- url是个人主页的地址 --><url>https://sunweb.blog.csdn.net/</url></developer></developers><!-- 源码仓库相关配置 --><scm><!-- 只读连接 --><connection>scm:git:git://gitee.com/qyxinhua_0/sunrays-framework.git</connection><!-- 开发者连接 (SSH) --><developerConnection>scm:git:git@gitee.com:qyxinhua_0/sunrays-framework.git</developerConnection><!-- 仓库浏览 URL --><url>https://gitee.com/qyxinhua_0/sunrays-framework</url></scm><!-- 发布到Maven中央仓库需要的配置1 -->
3.插件配置
<!-- 发布到Maven中央仓库需要的配置2 --><!-- central发布插件(需要配置!!!) --><plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.5.0</version><extensions>true</extensions><configuration><!-- 这里的id是跟settings.xml中对应的! --><publishingServerId>sonatype</publishingServerId><checksums>required</checksums><!-- 发布信息(最好自定义一下) --><deploymentName>Sunrays-Framework 企业级Java脚手架</deploymentName></configuration></plugin><!-- 下面几个都是通用的 --><!-- maven-source-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><!-- maven-javadoc-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.4.1</version><!-- 支持三个自定义标签 --><configuration><additionalOptions><arg>-tag</arg><arg>Author:a:"Author"</arg><arg>-tag</arg><arg>Create:a:"Create"</arg><arg>-tag</arg><arg>Version:a:"Version"</arg></additionalOptions></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin><!-- maven-gpg-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>3.2.4</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin>
3.完整的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>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.5</version><!-- 项目名 --><name>${project.groupId}:${project.artifactId}</name><!-- 简单描述 --><description>统一管理依赖,本项目的所有模块都要直接或者间接的继承该模块</description><!-- 开源地址 --><url>https://gitee.com/qyxinhua_0/sunrays-framework/tree/master/sunrays-dependencies</url><!-- <packaging>pom</packaging> 被设置为 pom 时,这表示该项目是一个 管理依赖的项目 或 聚合项目 --><packaging>pom</packaging><properties><!-- 指定编译版本 --><java.version>1.8</java.version><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 指定版本号 --><lombok.version>1.18.16</lombok.version><spring-boot.version>2.4.2</spring-boot.version><spring-cloud.version>2020.0.1</spring-cloud.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><druid.version>1.2.8</druid.version><mybatis-plus.version>3.5.3</mybatis-plus.version><transmittable-thread-local.version>2.12.4</transmittable-thread-local.version><mapstruct.version>1.4.2.Final</mapstruct.version><minio.version>8.5.14</minio.version><okhttp.version>4.11.0</okhttp.version><javaparser.version>3.25.4</javaparser.version><servlet-api.version>2.5</servlet-api.version><java-dotenv.version>5.2.2</java-dotenv.version></properties><!-- 统一指定版本 --><dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><!-- 下面两个配置表示导入spring-boot-dependencies的dependencyManagement的版本 --><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><!-- druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- transmittable-thread-local --><dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId><version>${transmittable-thread-local.version}</version></dependency><!-- mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></dependency><!-- minio --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version></dependency><!-- okhttp必须升级到这个版本 --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>${okhttp.version}</version></dependency><!-- javaparser解析java代码,读取指定方法 --><dependency><groupId>com.github.javaparser</groupId><artifactId>javaparser-core</artifactId><version>${javaparser.version}</version></dependency><!-- SpringBoot2.4.2对应的Servlet的API --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet-api.version}</version></dependency><!-- 可以使用.env文件提前加载配置,确保数据安全 --><dependency><groupId>io.github.cdimascio</groupId><artifactId>java-dotenv</artifactId><version>${java-dotenv.version}</version></dependency></dependencies></dependencyManagement><!--指定通用依赖--><dependencies><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId></dependency><!-- commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><!-- gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency></dependencies><!-- 阿里云仓库,在父模块中配置仓库,可以使得所有子模块自动继承这个配置,这样在多模块项目中,每个模块无需单独配置仓库信息,便于管理和维护。 --><repositories><repository><id>central</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><!-- 是否开启发布版构件下载 --><releases><enabled>true</enabled></releases><!-- 是否开启快照版构件下载 --><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 发布到Maven中央仓库需要的配置1 --><!-- 开源协议 --><licenses><license><name>MIT License</name><url>http://www.opensource.org/licenses/mit-license.php</url></license></licenses><!-- 开发者配置 --><developers><developer><name>sxs</name><email>xxx.com</email><!-- url是个人主页的地址 --><url>https://sunweb.blog.csdn.net/</url></developer></developers><!-- 源码仓库相关配置 --><scm><!-- 只读连接 --><connection>scm:git:git://gitee.com/qyxinhua_0/sunrays-framework.git</connection><!-- 开发者连接 (SSH) --><developerConnection>scm:git:git@gitee.com:qyxinhua_0/sunrays-framework.git</developerConnection><!-- 仓库浏览 URL --><url>https://gitee.com/qyxinhua_0/sunrays-framework</url></scm><!-- 发布到Maven中央仓库需要的配置1 --><!-- 构建项目通用配置 --><build><!-- maven的编译插件(配置注解处理器) --><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><!-- maven编译插件版本号 --><version>3.8.1</version><configuration><!-- 配置注解处理器(比如Lombok和MapStruct) --><annotationProcessorPaths><!-- Lombok 注解处理器 --><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path><!-- MapStruct 注解处理器 --><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></path><!-- 只要配置了annotationProcessorPaths就必须配置,否则自定义starter的yml没有提示!!! --><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring-boot.version}</version></path></annotationProcessorPaths></configuration></plugin><!--多模块Maven项目统一修改版本号--><plugin><groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId><version>2.8.1</version><configuration><generateBackupPoms>false</generateBackupPoms></configuration></plugin><!-- 发布到Maven中央仓库需要的配置2 --><!-- central发布插件(需要配置!!!) --><plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.5.0</version><extensions>true</extensions><configuration><!-- 这里的id是跟settings.xml中对应的! --><publishingServerId>sonatype</publishingServerId><checksums>required</checksums><!-- 发布信息(最好自定义一下) --><deploymentName>Sunrays-Framework 企业级Java脚手架</deploymentName></configuration></plugin><!-- 下面几个都是通用的 --><!-- maven-source-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><!-- maven-javadoc-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.4.1</version><!-- 支持三个自定义标签 --><configuration><additionalOptions><arg>-tag</arg><arg>Author:a:"Author"</arg><arg>-tag</arg><arg>Create:a:"Create"</arg><arg>-tag</arg><arg>Version:a:"Version"</arg></additionalOptions></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin><!-- maven-gpg-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>3.2.4</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins><resources><!-- 配置资源文件,这里主要是指 src/main/resources 目录 --><resource><directory>src/main/resources</directory><!-- 配置了这个,则 Maven 的环境变量就可以填充到 application-xxx.yml 中(用 $ 符号取),可用于环境隔离 --><filtering>true</filtering></resource><!-- 可选:如果项目中有需要打包的 XML 文件,可以添加这部分配置 --><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><!-- 统一指定打包插件版本(与SpringBoot一致) --><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin></plugins></pluginManagement></build><!-- maven的环境变量env-flag的值为具体的值 --><profiles><!-- 开发 --><profile><!-- id(不重复即可) --><id>dev</id><properties><env-flag>dev</env-flag></properties><!-- 默认为dev --><activation><activeByDefault>true</activeByDefault></activation></profile><!-- 测试 --><profile><id>test</id><properties><env-flag>test</env-flag></properties></profile><!-- 生产 --><profile><id>prod</id><properties><env-flag>prod</env-flag></properties></profile></profiles>
</project>
2.sunrays-framework(统一管理子模块)
1.继承sunrays-dependencies
<parent><groupId>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.5</version><!-- 当要继承的模块不是目录中的当前模块的父模块时使用 --><relativePath/>
</parent><artifactId>sunrays-framework</artifactId>
<!-- 这里必须指定自己的版本,否则使用mvn versions 设置版本的时候会有问题 -->
<version>0.0.5</version>
2.发布基本配置
<!-- 项目名 -->
<name>${project.groupId}:${project.artifactId}</name>
<!-- 简单描述 -->
<description>统一管理整个项目的打包操作</description>
<!-- 开源地址 -->
<url>https://gitee.com/qyxinhua_0/sunrays-framework</url>
3.完整的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><parent><groupId>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.5</version><!-- 当要继承的模块不是目录中的当前模块的父模块时使用 --><relativePath/></parent><artifactId>sunrays-framework</artifactId><!-- 这里必须指定自己的版本,否则使用mvn versions 设置版本的时候会有问题 --><version>0.0.5</version><!-- 项目名 --><name>${project.groupId}:${project.artifactId}</name><!-- 简单描述 --><description>统一管理整个项目的打包操作</description><!-- 开源地址 --><url>https://gitee.com/qyxinhua_0/sunrays-framework</url><!-- 统一管理子模块 --><packaging>pom</packaging><modules><module>sunrays-common-demo</module><module>sunrays-common</module><module>sunrays-combinations</module><module>sunrays-common-cloud</module><module>sunrays-combinations-demo</module></modules>
</project>
3.其余模块都继承sunrays-framework,如果需要发布,则需要填写发布基本配置
2.切换版本并发布到本地仓库
1.修改sunrays-dependencies的版本为0.0.6
2.修改sunrays-framework继承的版本也为0.0.6
3.将sunrays-dependencies模块发布到本地仓库,直接clean install
4.sunrays-framework 下使用maven 插件统一切换版本为0.0.6
mvn versions:set -DnewVersion=0.0.6 -DprocessAllModules=true
5.按照以下顺序发布到本地仓库
1.sunrays-framework 只发布父模块
mvn clean install -N
2.sunrays-common 直接clean install
3.sunrays-common-cloud 直接clean install
4.sunrays-combinations 直接clean install
5.sunrays-common-demo 直接clean install
6.sunrays-combinations-demo 直接clean install
7.最后sunrays-framework再clean install一下
3.发布到远程仓库
1.sunrays-dependencies 直接发布 mvn clean deploy
2.点击publish(一定要等到变绿再进行下一步!!!)
https://central.sonatype.com/publishing/deployments
3.sunrays-framework 单独发布 mvn clean deploy -N
4.依然点击publish(一定要等到变绿再进行下一步!!!)
https://central.sonatype.com/publishing/deployments
5.发布sunrays-common-cloud模块,直接发布即可
6.发布sunrays-common模块,也是直接发布
7.全部发布后,点击Publish,等待变绿
4.测试使用
1.新建一个Maven项目
2.在pom中直接使用sunrays-dependencies进行依赖管理
<dependencyManagement><dependencies><dependency><groupId>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3.引入依赖
<?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>com.demo</groupId><artifactId>sunrays-framework-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><dependency><groupId>cn.sunxiansheng</groupId><artifactId>sunrays-dependencies</artifactId><version>0.0.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- 日志模块 --><dependency><groupId>cn.sunxiansheng</groupId><artifactId>common-log4j2-starter</artifactId><version>0.0.6</version></dependency><!-- web模块 --><dependency><groupId>cn.sunxiansheng</groupId><artifactId>common-web-starter</artifactId><version>0.0.6</version></dependency></dependencies></project>
4.application.yml 配置日志存储根目录默认./logs
sun-rays:log4j2:home: /Users/sunxiansheng/IdeaProjects/demo/sunrays-framework-demo/logs # 日志存储根目录
5.SunraysApplication.java 启动类
package com.demo.sunrays;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description:** @Author sun* @Create 2025/1/12 13:53* @Version 1.0*/
@SpringBootApplication
public class SunraysApplication {public static void main(String[] args) {SpringApplication.run(SunraysApplication.class, args);}
}
6.编写controller
package com.demo.sunrays.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description:** @Author sun* @Create 2025/1/12 13:55* @Version 1.0*/
@RestController
public class SunraysController {@RequestMapping("/sunrays")public String sunrays() {return "sunrays";}
}