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

相关推荐
下次再写2 天前
Java互联网大厂面试技术问答实战:涵盖Java SE、Spring Boot、微服务及多场景应用
java·数据库·缓存·面试·springboot·microservices·技术问答
程序员老邢2 天前
【技术底稿 18】FTP 文件处理 + LibreOffice Word 转 PDF 在线预览 + 集群乱码终极排查全记录
java·经验分享·后端·pdf·word·springboot
DavidSoCool2 天前
Springboot AI 创建MCP Server
java·spring·ai·大模型·springboot·mcp
下次再写4 天前
互联网大厂Java面试三轮技术问答及详解——涵盖Spring Boot与微服务
java·springboot·microservices·interview
吕永强5 天前
基于SpringBoot+Vue校园报修系统的设计与实现(源码+论文+部署)
vue·毕业设计·springboot·毕业论文·报修系统·校园报修
Flittly6 天前
【SpringSecurity新手村系列】(3)自定义登录页与表单认证
java·笔记·安全·spring·springboot
Flittly8 天前
【SpringSecurity新手村系列】(2)整合 MyBatis 实现数据库认证
java·安全·spring·springboot·安全架构
极光代码工作室8 天前
基于SpringBoot的在线考试系统
java·springboot·web开发·后端开发
YDS8299 天前
大营销平台 —— 抽奖规则决策树
java·springboot·ddd
码农张310 天前
自定义跨字段校验必填注解
springboot