框架建设实战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 天前
【RabbitMQ】消息队列·详解+实操演示+功能实现(微服务架构)
rabbitmq·springboot·springamqp·consumer·exchange·producer·queue
vortex53 天前
用 Scoop 快速部署 JeecgBoot 开发环境:从依赖安装到服务管理
java·windows·springboot·web·开发·jeecg-boot
javpy6 天前
为什么Service层和Mapper层需要实现interface接口
java·springboot
古渡蓝按7 天前
基于 Word 模板占位符的动态文档生成实践(源码+保姆版)
springboot
带刺的坐椅7 天前
Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定轻量级应用容器化部署
java·docker·jar·springboot·solon
程序员杨工8 天前
【原创】SpringBoot3+Vue3客户管理系统
vue.js·springboot
bug攻城狮9 天前
SaaS多租户架构实践:字段隔离方案(共享数据库+共享Schema)
mysql·架构·mybatis·springboot·1024程序员节
后端小张12 天前
【JAVA 进阶】SpringBoot集成Sa-Token权限校验框架深度解析
java·spring boot·spring·架构·sa-token·springboot·权限框架
梁辰兴13 天前
企业培训笔记:外卖平台后端--套餐管理模块--新建套餐信息
笔记·vue·mybatis·springboot·外卖管理系统
No8g攻城狮13 天前
【异常解决】使用DateUtil.isSameDay()方法判断秒级时间戳是否属于同一天踩过的坑
java·jvm·spring boot·java-ee·springboot