-
Notifications
You must be signed in to change notification settings - Fork 0
/
pom.xml
216 lines (199 loc) · 9.93 KB
/
pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>demo-common</module>
<module>demo-temp</module>
<module>middleware</module>
</modules>
<packaging>pom</packaging>
<groupId>com.example</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo</name>
<description>learn springboot demo projects</description>
<properties>
<java.version>1.8</java.version>
<!--指定项目在maven编译时jdk的版本,很重要-->
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!--指定项目编码环境-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--依赖版本号-->
<hutool.version>5.8.25</hutool.version>
<fastjson2.version>2.0.42</fastjson2.version>
<knife4j.version>3.0.3</knife4j.version>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>demo-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<!--hutool-bom中不包含hutool-all的依赖坐标,需要指定版本-->
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-dependencies</artifactId>
<version>${knife4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-bom</artifactId>
<version>${hutool.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--不同的profile可以针对性修改某些变量的值-->
<profiles>
<!--本地环境-->
<profile>
<id>local</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>local</profiles.active>
<logging.level>debug</logging.level>
</properties>
</profile>
<profile>
<!--开发环境-->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
<logging.level>debug</logging.level>
</properties>
<!--默认激活此环境变量-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!--测试环境-->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
<logging.level>debug</logging.level>
</properties>
</profile>
<profile>
<!--生产环境-->
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
<logging.level>warn</logging.level>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!--maven编译时指定jdk版本和编码格式-->
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<!--[Maven中profile和filtering实现多个环境下的属性过滤]https://www.cnblogs.com/atai/p/6933966.html-->
<!--maven的获取属性使用占位符${},默认只能在pom文件范围内使用-->
<!--如果想在springboot的yml或properties中使用maven的占位符以获取pom文件的参数,就不能用${},因为可能会与EL表达式冲突-->
<!--解决办法:在resource标签里设置filtering为true,指定资源目录directory以及includes-->
<!-- 修改maven-resources-plugin插件的delimiter符号,并将useDefaultDelimiters设置为false-->
<!--但其实spring-boot-starter-parent已经帮我们做了这些工作,我们只需要在pom文件上继承依赖,同时引入maven-resources-plugin插件即可-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--打包时跳过单元测试-->
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<!--spring-boot-maven-plugin插件:-->
<!--1.spring-boot-maven-plugin插件提供对springboot maven的打包支持-->
<!--2.pom如果继承了spring-boot-starter-parent,则只需要在当前pom文件中引入spring-boot-maven-plugin插件即可-->
<!--3.pom如果继承了spring-boot-starter-parent,则应该避免在没有启动类的模块(既被依赖的模块)中引入此插件,否则由于repackage参数的存在,会报错'Unable to find main class'-->
<!--4.插件的repackage参数表示项目在对springboot maven打包时生成一个可执行的包-->
<!--repackage参数:-->
<!--1.spring-boot-starter-parent中已经默认开启了repackage参数,pom如果继承starter-parent,只需要引入插件即可在打包时生成可执行包-->
<!--2.插件开启repackage参数,打包生成的是可执行包(MANIFEST.MF有启动类),不可以当作依赖引入-->
<!--3.插件未开启repackage参数,打包生成的是依赖包(MANIFEST.MF中没有启动类),可以当作依赖引入,但不可执行-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<!--springboot项目默认构建jar包或war包的命令为repackage,作用于maven生命周期的package阶段-->
<!--默认情况下,mvn package命令执行后,会再次执行repackage命令,二次打包并生成可执行的包-->
<!--repackage在打jar包时,会生成可执行jar包,同时将mvn package生成的*.jar包重命名为*.jar.origin-->
<!--但是repackage过程会将工程中引入的任何依赖都打入包内,包括坐标上声明了scope=provided的依赖-->
<!--所以需要在springboot maven插件中手动排除scope=provided的依赖,比如 lombok、mybatis-plus等-->
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>