SpringBoot使用Maven定制一个parent简化开发

编程

1/ 场景

有很多小应用,有一些公共的特点,比如说都依赖了spring-boot、log4j2、lombok、fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一管理第三方依赖的版本。(为后续的微服务做准备哦!)

2/ 构建 parent

2.1. 新建一个Maven工程,any-root。

2.2. 修改pom.xml,添加父工程的依赖,基本上子工程都会用到这些依赖。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>cn.ictgu</groupId>

<artifactId>any-root</artifactId>

<version>1.0.RELEASE</version>

<packaging>pom</packaging>

<properties>

<spring-boot.version>1.5.3.RELEASE</spring-boot.version>

<java.version>1.8</java.version>

<lombock.version>1.16.16</lombock.version>

<fastjson.version>1.2.32</fastjson.version>

<commons-lang3.version>3.5</commons-lang3.version>

<jsoup.version>1.10.2</jsoup.version>

</properties>

<dependencyManagement>

<dependencies>

<!-- Spring Boot -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-dependencies</artifactId>

<version>${spring-boot.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<dependencies>

<!-- web -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<exclusions>

<exclusion>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-logging</artifactId>

</exclusion>

<exclusion>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

</exclusion>

</exclusions>

</dependency>

<!-- Web 容器 undertow -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-undertow</artifactId>

</dependency>

<!-- 日志 Log4j2 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-log4j2</artifactId>

</dependency>

<!-- 面向切面 aop -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-aop</artifactId>

</dependency>

<!-- 代码简化 Lombok -->

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>${lombock.version}</version>

</dependency>

<!-- JSON fastJSON -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>${fastjson.version}</version>

</dependency>

<!-- 通用工具类 Apache Commons-lang3 -->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>${commons-lang3.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->

<dependency>

<groupId>org.jsoup</groupId>

<artifactId>jsoup</artifactId>

<version>${jsoup.version}</version>

</dependency>

</dependencies>

<!-- Package as an executable jar -->

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

附加一篇文章: Maven实战(六)--- dependencies与dependencyManagement的区别

2.3. 依赖了log4j2,需要在resources目录下添加log4j2的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="30">

<Properties>

<Property name="PID">????</Property>

<Property name="LOG_PATTERN">%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx</Property>

</Properties>

<Appenders>

<Console name="Console" target="SYSTEM_OUT" follow="true">

<PatternLayout pattern="${LOG_PATTERN}"/>

</Console>

</Appenders>

<Loggers>

<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />

<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />

<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />

<Root level="info">

<AppenderRef ref="Console"/>

</Root>

</Loggers>

</Configuration>

2.4 将父工程安装到本地仓库

方式一:使用 IDEA

方式二:使用命令行,进入pom.xml所在目录,执行

mvn clean install

至此,父工程已安装完毕,其它工程依赖此工程即可添加父工程所有依赖。

3/ 快速构建子工程

3.1 新建一个Maven工程:avatar

3.2 修改pom.xml,继承父工程any-root

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>cn.ictgu</groupId>

<artifactId>avatar</artifactId>

<version>1.0-SNAPSHOT</version>

<parent>

<groupId>cn.ictgu</groupId>

<artifactId>any-root</artifactId>

<version>1.0.RELEASE</version>

</parent>

</project>

IDEA 会自动导入父工程中的依赖:

3.3 添加启动类,测试lombok/log4j2

4/ 子项目添加其它依赖,以spring-boot-actuator 为例:

4.1 在avatar项目的基础上,修改pom.xml,添加actuator的依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>cn.ictgu</groupId>

<artifactId>avatar</artifactId>

<version>1.0-SNAPSHOT</version>

<parent>

<groupId>cn.ictgu</groupId>

<artifactId>any-root</artifactId>

<version>1.0.RELEASE</version>

</parent>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

</dependencies>

</project>

4.2 添加配置文件,在resources下添加application.yml

management:

security:

enabled: false

作用是可以随意访问actuator下的所有端点

4.3 启动项目

4.4 验证actuator下的端点,访问http://localhost:8080/beans

查看整个应用所有bean的依赖关系:

5/ 总结

将公共依赖定制为父工程,有如下好处:

  • 避免手动添加依赖带来的失误操作;
  • 统一管理依赖的版本号;
  • 加快子工程的构建,一个继承即可获得大量公共服务。

以上是 SpringBoot使用Maven定制一个parent简化开发 的全部内容, 来源链接: utcz.com/z/516307.html

回到顶部