框架建设实战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的版本进行了统一控制。

相关推荐
YUELEI1187 小时前
SpringBoot3
springboot
武子康19 小时前
Java-23 深入浅出 MyBatis - 手写ORM框架4 框架优化 SqlSession DefaultSqlSession
java·开发语言·sql·mybatis·springboot
遇见你真好。20 小时前
BigDecimal数据处理方法总结
java·springboot
武子康2 天前
Java-21 深入浅出 MyBatis - 手写ORM框架2 手写Resources、MappedStatment、XMLBuilder等
java·开发语言·sql·mybatis·springboot
B站计算机毕业设计超人3 天前
计算机毕业设计SpringBoot+Vue.js知识图谱课程推荐系统 课程预测系统 mooc慕课课程爬虫 课程大数据 课程数据分析大屏 大数据毕业设计 大
大数据·python·深度学习·机器学习·springboot·数据可视化·推荐算法
正则表达式19514 天前
关于成功插入 SQLite 但没有数据的问题
java·sqlite·mybatis·springboot
幼儿园老大*6 天前
【系统架构核心服务设计】使用 Redis ZSET 实现排行榜服务
java·数据库·经验分享·redis·后端·系统架构·springboot
VipSoft8 天前
EasyExcel => EasyExcel-Plus => FastExcel
springboot