框架建设实战1——创建frame-parent

结合框架的结构,首先我们创建所以使用框架的parent,用以自顶向下的框架组件管理。

本框架基于maven进行依赖管理。具体步骤如下:

1.创建一个module

创建一个maven工程。命名为frame-parent。只有一个pom文件。文件内容主要包含:

XML 复制代码
  <parent> 
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.7.14</version>  
    <relativePath/>
  </parent> 

可以看到,框架继承了springboot的parent。

2.GAV 命名

XML 复制代码
  <groupId>com.test</groupId>  
  <artifactId>frame-parent</artifactId>  
  <name>frame-parent</name>  
  <packaging>pom</packaging>  
  <version>1.0.0-SNAPSHOT</version>

3.定义公用的属性

XML 复制代码
<properties> 
    <java.version>1.8</java.version>  
    <spring-cloud.version>2021.0.3</spring-cloud.version>
    <!-- 所有二方包版本的定义 -->
    <frame-bom.version>1.0.0-SNAPSHOT</frame-bom.version>
    <!-- 所有三方包版本的定义 -->  
    <frame-out-bom.version>1.0.0-SNAPSHOT</frame-out-bom.version>
    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>  
    <maven-source-plugin.version>3.2.1</maven-source-plugin.version>  
    <maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>  
    <lombok-plugin.version>1.18.24</lombok-plugin.version>  
    <mapstruct-plugin.version>1.3.1.Final</mapstruct-plugin.version>  
    <lombok-mapstruct-binding-plugin.version>0.2.0</lombok-mapstruct-binding-plugin.version>  
</properties>

可以看到,parent纳管了frame-bom和frame-out-bom,分别管理二方包和三方包。BOM,即物料清单的意思。

4.依赖管理

XML 复制代码
  <dependencyManagement> 
    <dependencies>
      <!-- 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>

      <!-- 由frame-util-bom 管理所有springboot之外的第三方依赖 -->
      <dependency> 
        <groupId>com.test</groupId>  
        <artifactId>frame-out-bom</artifactId>
        <version>${frame-out-bom.version}</version>
        <type>pom</type>  
        <scope>import</scope> 
      </dependency>

      <!-- 由frame-bom管理所有二方包依赖 -->
      <dependency>
        <groupId>com.test</groupId>
        <artifactId>frame-bom</artifactId>
        <version>${frame-bom.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies> 
  </dependencyManagement>

其中frame-bom 和 frame-out-bom 的定义见下文。

5.插件管理

此部分配置在build标签内。分为两部分。 一部分是插件依赖:

XML 复制代码
<plugins> 
      <!-- maven基础插件 -->  
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId> 
      </plugin>  
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-source-plugin</artifactId> 
      </plugin>
</plugins>

另一部分,为插件管理:

XML 复制代码
  <pluginManagement> 
      <plugins> 
        <plugin> 
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-compiler-plugin</artifactId>  
          <version>${maven-compiler-plugin.version}</version>  
          <configuration> 
            <source>${java.version}</source>  
            <target>${java.version}</target>  
            <annotationProcessorPaths> 
              <path> 
                <groupId>org.projectlombok</groupId>  
                <artifactId>lombok</artifactId>  
                <version>${lombok-plugin.version}</version> 
              </path>  
              <path> 
                <groupId>org.mapstruct</groupId>  
                <artifactId>mapstruct-processor</artifactId>  
                <version>${mapstruct-plugin.version}</version> 
              </path>  
              <path> 
                <groupId>org.projectlombok</groupId>  
                <artifactId>lombok-mapstruct-binding</artifactId>  
                <version>${lombok-mapstruct-binding-plugin.version}</version> 
              </path> 
            </annotationProcessorPaths> 
          </configuration> 
        </plugin>  
        <plugin> 
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-source-plugin</artifactId>  
          <version>${maven-source-plugin.version}</version>  
          <configuration> 
            <attach>true</attach> 
          </configuration>  
          <executions> 
            <execution> 
              <phase>package</phase>  
              <goals> 
                <goal>jar-no-fork</goal> 
              </goals> 
            </execution> 
          </executions> 
        </plugin>
      </plugins>
    </pluginManagement>

可见,parent对lombok和MapStruct的版本进行了统一控制。

相关推荐
Thanks_ks1 小时前
SpringBoot 自动化部署实战:CI/CD 整合方案与避坑指南
pipeline·jenkins·springboot·自动化部署·gitlab ci/cd·ci/cd 实战·docker 容器化
保持学习ing4 天前
黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)
java·笔记·spring·面试·mvc·mybatis·springboot
怡人蝶梦5 天前
Java大厂后端技术栈故障排查实战:Spring Boot、Redis、Kafka、JVM典型问题与解决方案
java·jvm·redis·elk·kafka·springboot·prometheus
怡人蝶梦6 天前
Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
java·jvm·redis·kafka·springboot·prometheus
怡人蝶梦6 天前
Spring Boot启动慢?Redis缓存击穿?Kafka消费堆积?——Java后端常见问题排查实战
java·jvm·redis·kafka·springboot·prometheus·microservices
JAVA坚守者7 天前
Java 对接 Office 365 邮箱全攻略:OAuth2 认证 + JDK8 兼容 + Spring Boot 集成(2025 版)
springboot·oauth2·office365·java 开发·企业级开发·jdk8 兼容
黎黎黎明⁠⁢8 天前
SpringBoot整合Sa-Token:实现RBAC权限模型
java·sa-token·springboot·idea
计算机软件bs辅导8 天前
t009-线上代驾管理系统
毕业设计·软件工程·springboot·大学生·计算机软件·毕设辅导·代驾系统
abcnull9 天前
java中自定义注解
java·spring·springboot·web·注解