结合框架的结构,首先我们创建所以使用框架的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的版本进行了统一控制。