Spring Boot 定制 parent 快速构建应用
1/ 场景
有很多小应用,有一些公共的特点,比如说都依赖了spring-boot、log4j2、lombok、fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一管理第三方依赖的版本。(为后续的微服务做准备哦!)
2/ 构建 parent
2.1. 新建一个Maven工程,any-root。
2.2. 修改pom.xml,添加父工程的依赖,基本上子工程都会用到这些依赖。
1
2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5
6 <groupId>cn.ictgu</groupId>
7 <artifactId>any-root</artifactId>
8 <version>1.0.RELEASE</version>
9 <packaging>pom</packaging>
10
11 <properties>
12 <spring-boot.version>1.5.3.RELEASE</spring-boot.version>
13 <java.version>1.8</java.version>
14 <lombock.version>1.16.16</lombock.version>
15 <fastjson.version>1.2.32</fastjson.version>
16 <commons-lang3.version>3.5</commons-lang3.version>
17 <jsoup.version>1.10.2</jsoup.version>
18 </properties>
19
20 <dependencyManagement>
21 <dependencies>
22 <!-- Spring Boot -->
23 <dependency>
24 <groupId>org.springframework.boot</groupId>
25 <artifactId>spring-boot-dependencies</artifactId>
26 <version>${spring-boot.version}</version>
27 <type>pom</type>
28 <scope>import</scope>
29 </dependency>
30 </dependencies>
31 </dependencyManagement>
32
33 <dependencies>
34
35 <!-- web -->
36 <dependency>
37 <groupId>org.springframework.boot</groupId>
38 <artifactId>spring-boot-starter-web</artifactId>
39 <exclusions>
40 <exclusion>
41 <groupId>org.springframework.boot</groupId>
42 <artifactId>spring-boot-starter-logging</artifactId>
43 </exclusion>
44 <exclusion>
45 <groupId>org.springframework.boot</groupId>
46 <artifactId>spring-boot-starter-tomcat</artifactId>
47 </exclusion>
48 </exclusions>
49 </dependency>
50
51 <!-- Web 容器 undertow -->
52 <dependency>
53 <groupId>org.springframework.boot</groupId>
54 <artifactId>spring-boot-starter-undertow</artifactId>
55 </dependency>
56
57 <!-- 日志 Log4j2 -->
58 <dependency>
59 <groupId>org.springframework.boot</groupId>
60 <artifactId>spring-boot-starter-log4j2</artifactId>
61 </dependency>
62
63 <!-- 面向切面 aop -->
64 <dependency>
65 <groupId>org.springframework.boot</groupId>
66 <artifactId>spring-boot-starter-aop</artifactId>
67 </dependency>
68
69 <!-- 代码简化 Lombok -->
70 <dependency>
71 <groupId>org.projectlombok</groupId>
72 <artifactId>lombok</artifactId>
73 <version>${lombock.version}</version>
74 </dependency>
75
76 <!-- JSON fastJSON -->
77 <dependency>
78 <groupId>com.alibaba</groupId>
79 <artifactId>fastjson</artifactId>
80 <version>${fastjson.version}</version>
81 </dependency>
82
83 <!-- 通用工具类 Apache Commons-lang3 -->
84 <dependency>
85 <groupId>org.apache.commons</groupId>
86 <artifactId>commons-lang3</artifactId>
87 <version>${commons-lang3.version}</version>
88 </dependency>
89
90
91 <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
92 <dependency>
93 <groupId>org.jsoup</groupId>
94 <artifactId>jsoup</artifactId>
95 <version>${jsoup.version}</version>
96 </dependency>
97
98 </dependencies>
99
100 <!-- Package as an executable jar -->
101 <build>
102 <plugins>
103 <plugin>
104 <groupId>org.springframework.boot</groupId>
105 <artifactId>spring-boot-maven-plugin</artifactId>
106 </plugin>
107 </plugins>
108 </build>
109
110
111</project>
附加一篇文章: Maven实战(六)--- dependencies与dependencyManagement的区别
2.3. 依赖了log4j2,需要在resources目录下添加log4j2的配置文件
项目结构
1
2<Configuration status="WARN" monitorInterval="30">
3 <Properties>
4 <Property name="PID">????</Property>
5 <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>
6 </Properties>
7 <Appenders>
8 <Console name="Console" target="SYSTEM_OUT" follow="true">
9 <PatternLayout pattern="${LOG_PATTERN}"/>
10 </Console>
11 </Appenders>
12 <Loggers>
13 <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
14 <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
15 <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
16
17 <Root level="info">
18 <AppenderRef ref="Console"/>
19 </Root>
20 </Loggers>
21</Configuration>
2.4 将父工程安装到本地仓库
方式一:使用 IDEA
点击 install
方式二:使用命令行,进入pom.xml所在目录,执行
1mvn clean install
至此,父工程已安装完毕,其它工程依赖此工程即可添加父工程所有依赖。
3/ 快速构建子工程
3.1 新建一个Maven工程:avatar
3.2 修改pom.xml,继承父工程any-root
1
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>cn.ictgu</groupId>
8 <artifactId>avatar</artifactId>
9 <version>1.0-SNAPSHOT</version>
10
11 <parent>
12 <groupId>cn.ictgu</groupId>
13 <artifactId>any-root</artifactId>
14 <version>1.0.RELEASE</version>
15 </parent>
16
17</project>
IDEA 会自动导入父工程中的依赖:
相关依赖
3.3 添加启动类,测试lombok/log4j2
启动程序
4/ 子项目添加其它依赖,以spring-boot-actuator 为例:
4.1 在avatar项目的基础上,修改pom.xml,添加actuator的依赖
1
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>cn.ictgu</groupId>
8 <artifactId>avatar</artifactId>
9 <version>1.0-SNAPSHOT</version>
10
11 <parent>
12 <groupId>cn.ictgu</groupId>
13 <artifactId>any-root</artifactId>
14 <version>1.0.RELEASE</version>
15 </parent>
16
17 <dependencies>
18 <dependency>
19 <groupId>org.springframework.boot</groupId>
20 <artifactId>spring-boot-starter-actuator</artifactId>
21 </dependency>
22 </dependencies>
23
24</project>
4.2 添加配置文件,在resources下添加application.yml
1management:
2 security:
3 enabled: false
作用是可以随意访问actuator下的所有端点
4.3 启动项目
启动日志
4.4 验证actuator下的端点,访问http://localhost:8080/beans
查看整个应用所有bean的依赖关系:
/beans
5/ 总结
将公共依赖定制为父工程,有如下好处:
避免手动添加依赖带来的失误操作;
统一管理依赖的版本号;
加快子工程的构建,一个继承即可获得大量公共服务。
© 著作权归作者所有,转载或内容合作请联系作者
● Spring Boot 日志处理你还在用Logback?
如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!