老鬼的博客 来都来啦,那就随便看看吧~
springboot2.7.5升级到3.1.0,jdk从11升级到17
发布于: 2023-06-05 更新于: 2023-06-05 分类于:  阅读次数: 

一:介绍

1
springboot从2.7.5升级到3.1.0,jdk最低要求是17

二:升级jdk17和springboot3.1.0

2.1 springboot版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
调整前:
<parent>
<!-- springboot版本 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath />
</parent>
调整后:
<parent>
<!-- springboot版本 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
<relativePath />
</parent>

1.jpg

2.2 jdk版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
调整前:
<properties>
<!-- jdk版本 -->
<java.version>11</java.version>
<!-- mybatis版本号 -->
<mybatis.plus.version>3.1.0</mybatis.plus.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- ali fastjson -->
<fastjson.version>1.2.57</fastjson.version>
<maven.resources.overwrite>true</maven.resources.overwrite>
</properties>
调整后:
<properties>
<!-- jdk版本 -->
<java.version>17</java.version>
<!-- mybatis版本号 -->
<mybatis.plus.version>3.5.3.1</mybatis.plus.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- ali fastjson -->
<fastjson.version>1.2.57</fastjson.version>
<maven.resources.overwrite>true</maven.resources.overwrite>
</properties>

2.jpg

2.3 mybatisplus版本

  • 说明

    1
    2
    3
    mybatisplus的版本需要升级到3.5.3.1要不然会报错,找不到mapper.xml对应的
    方法,并且涉及到这块的升级,好多注解的方法也需要一并改掉。
    比如:entity中的IdType.UUID要变成IdType.ASSIGN_UUID。
  • 修改前

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <properties>
    <!-- jdk版本 -->
    <java.version>11</java.version>
    <!-- mybatis版本号 -->
    <mybatis.plus.version>3.1.0</mybatis.plus.version>
    <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    <!-- ali fastjson -->
    <fastjson.version>1.2.57</fastjson.version>
    <maven.resources.overwrite>true</maven.resources.overwrite>
    </properties>

    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
    </dependency>
  • 修改后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<properties>
<!-- jdk版本 -->
<java.version>17</java.version>
<!-- mybatis版本号 -->
<mybatis.plus.version>3.5.3.1</mybatis.plus.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- ali fastjson -->
<fastjson.version>1.2.57</fastjson.version>
<maven.resources.overwrite>true</maven.resources.overwrite>
</properties>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
  • genertor修改前

    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
    package com.tohours.actminisite.genertor;

    import java.util.ArrayList;
    import java.util.List;

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.core.toolkit.StringPool;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.InjectionConfig;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.FileOutConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.po.TableInfo;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

    public class AccessLogGenerator {

    private final static String TABLE_NAME = "actminisite_access_log";// 表名
    private final static String ENTITY_NAME = "AccessLog";// 实体类名称
    private final static String DATABASE_NAME = "actminisite";// 数据库名称
    private final static String AUTH_NAME = "RenJie";// 作者的名称

    /**
    * @desc Mapper生成器
    * @param args
    */
    public static void main(String[] args) {

    AutoGenerator mpg = new AutoGenerator();

    // 全局配置
    GlobalConfig gc = new GlobalConfig();
    String projectPath = System.getProperty("user.dir");
    gc.setOutputDir(projectPath + "/src/main/java");
    gc.setFileOverride(true);
    gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
    gc.setEnableCache(false);// XML 二级缓存
    gc.setBaseResultMap(true);// XML ResultMap
    gc.setBaseColumnList(true);// XML columList
    gc.setAuthor(AUTH_NAME);
    gc.setOpen(false);

    // 自定义文件命名,注意 %s 会自动填充表实体属性!
    gc.setMapperName(String.format("%sMapper", ENTITY_NAME));
    gc.setXmlName(String.format("%sMapper", ENTITY_NAME));
    gc.setServiceName(String.format("%sService", ENTITY_NAME));
    gc.setServiceImplName(String.format("%sServiceImpl", ENTITY_NAME));
    gc.setEntityName(String.format("%s", ENTITY_NAME));
    gc.setControllerName(String.format("%sController", ENTITY_NAME));
    mpg.setGlobalConfig(gc);

    // 数据源配置
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setDbType(DbType.MYSQL);
    dsc.setUrl("jdbc:mysql://sit:23306/" + DATABASE_NAME + "?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
    dsc.setDriverName("com.mysql.cj.jdbc.Driver");
    dsc.setUsername("develop");
    dsc.setPassword("123456");
    mpg.setDataSource(dsc);


    // 自定义配置
    InjectionConfig cfg = new InjectionConfig() {
    @Override
    public void initMap() {
    // to do nothing
    }
    };
    // 如果模板引擎是 freemarker
    // 自定义输出配置
    List<FileOutConfig> focList = new ArrayList<>();
    // 自定义配置会被优先输出
    focList.add(new FileOutConfig() {
    @Override
    public String outputFile(TableInfo tableInfo) {
    // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
    return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper"
    + StringPool.DOT_XML;
    }
    });
    cfg.setFileOutConfigList(focList);
    mpg.setCfg(cfg);

    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
    strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    strategy.setInclude(new String[] { TABLE_NAME }); // 需要生成的表,注释掉生成全部表
    // 自定义 mapper 父类
    strategy.setSuperMapperClass("com.tohours.actminisite.mapper.IMapper");
    // 自定义 service 父类
    strategy.setSuperServiceClass("com.tohours.actminisite.service.BaseService");
    // 自定义 service 实现类父类
    strategy.setSuperServiceImplClass("com.tohours.actminisite.service.impl.BaseServiceImpl");
    // 自定义 controller 父类
    strategy.setSuperControllerClass("com.tohours.actminisite.controller.BaseController");
    strategy.setEntityLombokModel(true);// 【实体】是否为lombok模型(默认 false)
    strategy.setRestControllerStyle(true);// 生成 @RestController 控制器
    strategy.setEntityTableFieldAnnotationEnable(true);// 是否生成实体时,生成字段注解
    mpg.setStrategy(strategy);

    // 包配置
    PackageConfig pc = new PackageConfig();
    pc.setParent("com.tohours.actminisite");
    pc.setController("controller");
    pc.setXml("mapper.xml");
    pc.setMapper("mapper");
    mpg.setPackageInfo(pc);

    // 执行生成
    mpg.execute();

    }

    }
  • genertor修改后

    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
    package com.tohours.actminisite.genertor;

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
    import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

    public class AccessLogGenerator {

    private final static String TABLE_NAME = "aia_external_activity_amt_access_log";// 表名
    private final static String FORMAT_NAME = "AccessLog";// 实体类名称
    private final static String DATABASE_NAME = "actminisite";// 数据库名称

    // 数据库连接配置
    private static final String JDBC_URL = "jdbc:mysql://sit.wai:33306/" + DATABASE_NAME
    + "?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
    private static final String JDBC_USER_NAME = "develop";
    private static final String JDBC_PASSOWRD = "123456";

    private static final String OUTPUTDIR = "/src/main/java";

    // 作者
    private static final String AUTHOR = "RenJie";

    // 设置父包名
    private static final String PACKAGE_NAME = "com.tohours.actminisite";
    // 设置父包模块名
    private static final String MODULE_NAME = null;
    // 设置MVC下各个模块的包名
    private static final String ENTITY_NAME = "entity";
    private static final String MAPPER_NAME = "mapper";
    private static final String SERVICE_NAME = "service";
    private static final String SERVICE_IMPL_NAME = "service.impl";
    private static final String CONTROLLER_NAME = "controller";

    // 指定数据库表的前缀。指定后,在生成文件时,模板会自动截取掉前缀字符,如表名为sys_user,指定前缀为sys_,生成实体是自动识别生成为user
    // 多个前缀可以用逗号隔开,例如 sys_,bs_,根据项目需要配置
    private static final String TABLE_PREFIX = "";

    // 设置生成实体时的公共父类,例如 com.tohours.actminisite.entiry.BaseEntity ,根据项目需要配置
    private static final String superEntityPackageString = null;
    // 设置生成Controller时的公共父类,例如 com.tohours.actminisite.controller.BaseController ,根据项目需要配置
    private static final String superControllerPackageString = "com.tohours.actminisite.controller.BaseController";
    // 设置生成Service时的公共父类,例如 com.tohours.actminisite.service.Basactminisite ,根据项目需要配置
    private static final String superServicePackageString = "com.tohours.actminisite.service.Basactminisite";
    // 设置生成ServiceImpl时的公共父类,例如 com.tohours.actminisite.service.impl.BasactminisiteImpl ,根据项目需要配置
    private static final String superServiceImplPackageString = "com.tohours.actminisite.service.impl.BasactminisiteImpl";
    // 设置生成Mapper时的公共父类,例如 com.tohours.actminisite.service.mapper.IMapper ,根据项目需要配置
    private static final String superMapperPackageString = "com.tohours.actminisite.mapper.IMapper";

    /**
    * @desc Mapper生成器
    * @param args
    */
    public static void main(String[] args) {

    // 1.数据库配置
    DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig
    // 驱动连接的URL、数据库连接用户名、数据库连接密码
    .Builder(JDBC_URL, JDBC_USER_NAME, JDBC_PASSOWRD)
    // 关键字处理 ,这里选取了mysql5.7文档中的关键字和保留字(含移除) 说明:官方文档中没有关于sqlserver,oracle数据库的配置
    // .keyWordsHandler(new MySqlKeyWordsHandler())
    // 数据库信息查询类,默认由 dbType 类型决定选择对应数据库内置实现:mysql:MySqlQuery(),sqlserver
    // :SqlServerQuery(),Oracle:OracleQuery()
    .dbQuery(new MySqlQuery())
    // 类型转换,数据库=》JAVA类型 mysql: MySqlTypeConvert() sqlserver:SqlServerTypeConvert()
    // oracle:OracleTypeConvert()
    .typeConvert(new MySqlTypeConvert())
    // 数据库 schema name
    .schema(DATABASE_NAME);

    // 1.1.快速生成器
    FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);

    // 2.全局配置
    // 覆盖已生成文件
    // 不打开生成文件目录
    // 指定输出目录,注意使用反斜杠\
    // 设置注释的作者
    // 生成swagger注解
    // 设置注释的日期格式
    // 使用java8新的时间类型
    fastAutoGenerator.globalConfig(globalConfigBuilder -> globalConfigBuilder.fileOverride().disableOpenDir()
    .outputDir(System.getProperty("user.dir") + OUTPUTDIR).author(AUTHOR).enableSwagger()
    .commentDate("yyyy-MM-dd").dateType(DateType.TIME_PACK));

    // 3.包配置
    // 设置父包名
    // 设置父包模块名
    // 设置MVC下各个模块的包名
    // 设置XML资源文件的目录
    fastAutoGenerator.packageConfig(packageConfigBuilder -> packageConfigBuilder
    // 父包模块名
    .moduleName(MODULE_NAME)
    // 父包名
    .parent(PACKAGE_NAME).entity(ENTITY_NAME).mapper(MAPPER_NAME).service(SERVICE_NAME)
    .serviceImpl(SERVICE_IMPL_NAME).controller(CONTROLLER_NAME));

    // 4.模板配置
    // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    AbstractTemplateEngine templateEngine = new FreemarkerTemplateEngine();
    fastAutoGenerator.templateEngine(templateEngine);

    // 6.策略配置
    // 设置需要生成的表名
    // 设置过滤表前缀
    fastAutoGenerator.strategyConfig(strategyConfigBuilder -> {
    try {
    strategyConfigBuilder.enableCapitalMode().enableSkipView().disableSqlFilter()
    // 表名匹配,按指定的表名生成对应的文件
    .addInclude(TABLE_NAME)
    // 指定数据库表的前缀。指定后,在生成文件时,模板会自动截取掉前缀字符,如表名为sys_user,指定前缀为sys_,生成实体是自动识别生成为user
    .addTablePrefix(TABLE_PREFIX);
    } catch (Exception e) {
    e.printStackTrace();
    }
    });

    // 6.1.Entity策略配置
    // 生成实体时生成字段的注解,包括@TableId注解等
    // 数据库表和字段映射到实体的命名策略,为下划线转驼峰
    // 全局主键类型为None
    // 实体名称格式化为XXXEntity
    fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.entityBuilder()
    // 开启生成实体时生成字段注解
    .enableTableFieldAnnotation()
    // 数据库表映射到实体的命名策略,NamingStrategy.underline_to_camel
    // 指下划线转驼峰,NamingStrategy.no_change 无改变
    .naming(NamingStrategy.underline_to_camel)
    // 开启实体Lombok注解模式
    .enableLombok()
    //设置主键的生成策略
    .idType(IdType.ASSIGN_UUID)
    // 开启 Boolean 类型字段移除 is 前缀
    .enableRemoveIsPrefix().columnNaming(NamingStrategy.underline_to_camel)
    // 设置Entity父类
    .superClass(superEntityPackageString)
    // .idType(IdType.NONE)
    .formatFileName(FORMAT_NAME));

    // 6.2.Controller策略配置
    // 开启生成@RestController控制器
    fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder()
    // 设置Controller父类
    .superClass(superControllerPackageString)
    // 开启驼峰转连字符
    .enableHyphenStyle()
    // 开启生成@RestController 控制器
    .enableRestStyle());

    // 6.3.Service策略配置
    // 格式化service接口和实现类的文件名称,去掉默认的ServiceName前面的I
    fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.serviceBuilder()
    //设置父类
    .superServiceClass(superServicePackageString)
    .superServiceImplClass(superServiceImplPackageString)
    // 格式化 Service文件名称
    .formatServiceFileName(String.format("%sService", FORMAT_NAME))
    .formatServiceImplFileName(String.format("%sServiceImpl", FORMAT_NAME)));

    // 6.4.Mapper策略配置
    // 格式化 mapper文件名,格式化xml实现类文件名称
    fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.mapperBuilder()
    //设置父类
    .superClass(superMapperPackageString)
    // 开启 @Mapper 注解
    .enableMapperAnnotation().formatMapperFileName(String.format("%sMapper", FORMAT_NAME))
    .enableBaseColumnList()
    .enableBaseResultMap()
    .enableMapperAnnotation()
    .formatXmlFileName(String.format("%sMapper", FORMAT_NAME)));

    // 7.生成代码
    fastAutoGenerator.execute();
    }

    }

2.4 servlet-api升级

1
2
3
4
5
springboot3.0版本移除了javax.servlet.**,变成了jakarta.servlet.**,
比如:javax.servlet.http.HttpServletRequest 和javax.servlet.http.HttpServletResponse
分别改为jakarta.servlet.http.HttpServletRequest 和jakarta.servlet.http.HttpServletResponse

所以所有涉及到代码里面用到的这个包都需要调整
  • 修改前

    1
    2
    3
    4
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    </dependency>
  • 修改后

    1
    2
    3
    4
    <dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    </dependency>

2.5 jakarta.annotation.*

1
2
所有的javax.annotation.*变成了jakarta.annotation.*,
所以代码里面私有的涉及到这块的代码都需要重新引入

2.6 完整的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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
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>

<parent>
<!-- springboot版本 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
<relativePath />
</parent>

<groupId>com.tohours</groupId>
<artifactId>actminisite</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>actminisite</name>
<description>actminisite</description>
<packaging>jar</packaging>


<!-- 仓库源 -->
<repositories>
<!-- 阿里云 -->
<repository>
<id>maven</id>
<name>Maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>

<!--
BlueDeer仓库
如果下载不下来请浏览器访问https://jay.tohours.com/BlueDeerMvnRepository/手动下载
-->
<repository>
<id>BlueDeer</id>
<name>BlueDeer</name>
<url>https://jay.tohours.com/BlueDeerMvnRepository/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>

</repositories>

<properties>
<!-- jdk版本 -->
<java.version>17</java.version>
<!-- mybatis版本号 -->
<mybatis.plus.version>3.5.3.1</mybatis.plus.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- ali fastjson -->
<fastjson.version>1.2.57</fastjson.version>
<maven.resources.overwrite>true</maven.resources.overwrite>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>

<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>

<!-- 开发时自动加载class -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- mssql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- ali druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<!-- lombox 自动生成get set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- commons-io -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 对集合类的操作 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<!-- Lang组件主要是一些工具类,涉及到数组工具类,字符串工具类,字符工具类,数学方面,时间日期工具类,异常,事件等工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- Commons Codec就提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等。 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>

<!-- mybatis-plus begin -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>



<!-- springboot不推荐使用jsp,所以在spring-boot-starter-web启动器中并没有包括这两个,
需要单独引入jstl和tomcat-embed-jasper的依赖支持-->
<!--thymeleaf整合JSP需要用到下面的依赖-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
<!-- jasper:jsp引擎 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
</dependency>

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis.plus.version}</version>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
<exclusion>
<artifactId>mybatis-spring</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>

<!-- mybatis-plus end -->

<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>

<!-- Qrcode二维码 -->
<dependency>
<groupId>QRCode</groupId>
<artifactId>QRCode</artifactId>
<version>3.0.0</version>
</dependency>

<!-- zxing 二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>


<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>

<!--ActiveMq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!--消息队列连接池 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>

<!-- 验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>

<!-- 解析user-agent头信息 -->
<dependency>
<groupId>nl.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
<version>1.2.4</version>
</dependency>

<!-- 阿里云OSS -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.14.1</version>
</dependency>

<!-- 阿里云sts -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sts</artifactId>
<version>3.0.0</version>
</dependency>

<!-- quartz定时 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

<!--集成redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- lettuce pool 缓存连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>

<!-- spring cache -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-core</artifactId>
<version>2.0.9-GA</version>
</dependency>
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-xss</artifactId>
<version>2.0.9-GA</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<artifactId>commons-collections4</artifactId>
<groupId>org.apache.commons</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>

<!-- Hutool是一个小而全的Java工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.19</version>
</dependency>

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>

<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>




<!-- unirest http请求 -->
<!-- https://www.baeldung.com/unirest 官方文档 -->
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>
<exclusions>
<exclusion>
<artifactId>json</artifactId>
<groupId>org.json</groupId>
</exclusion>
</exclusions>
</dependency>


<!-- tools-excel插件 -->
<dependency>
<groupId>cn.gjing</groupId>
<artifactId>tools-excel</artifactId>
<version>2021.7.2</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

<!-- jtools start -->
<dependency>
<groupId>com.bluedeer</groupId>
<artifactId>jtools</artifactId>
<version>1.0.6</version>
<!-- jtools end -->
</dependency>
<!-- 反编译的工具 -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>3.0.8</version>
<type>pom</type>
</dependency>

<!-- easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>



<!-- 分词器 -->
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_seg</artifactId>
<version>5.1.1</version>
</dependency>



</dependencies>


<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>

<build>
<finalName>actminisite</finalName>
<resources>
<!-- 打包时将jsp文件拷贝到META-INF目录下-->
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/webapp</directory>
<!--注意此次必须要放在此目录下才能被访问到-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<!-- 打包mapper.xml -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<!-- 打包配置文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>doc/**</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources>

<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 必须使用这个版本,要不然打出来jar包访问不了jsp,会报404 -->
<version>1.4.2.RELEASE</version>
<configuration>
<mainClass>com.tohours.actminisite.ActminisiteApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgs>
<arg>-parameters</arg> <!-- 设置编译带上参数,可以使用反射获取到参数名,而不是arg0 等 -->
</compilerArgs>
<excludes>
<!-- 排除为了解决veracode用的实现类 -->
<exclude>**/omega/impl/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>

</project>

三:打包脚本调整

  • jdk17.bat

    1
    2
    3
    set JAVA_HOME=C:\Program Files\Java\jdk-17.0.7
    set PATH=%JAVA_HOME%\bin;%path%;C:\Windows\system32;C:\Windows
    java -version
  • mvn.bat

    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
    @echo off
    REM 声明采用UTF-8编码
    chcp 65001
    title mvn package actminisite
    :: RenJie


    ::打jar包
    del C:\Users\Administrator\Desktop\actminisite.jar
    echo =====================================================
    echo ===== 打包友邦友享actminisitejar包 ======
    echo =====================================================
    set versionPath=D:\javaProgram\actminisite\trunk\code\src\main\resources\static
    set pomPath=D:\javaProgram\actminisite\trunk\code

    ::设置jdk17
    call jdk17.bat;

    D:
    cd %versionPath%
    :: 生成version.jsp和version.html
    call create_version.bat
    ::打包
    cd %pomPath%
    call mvn clean package -Dmaven.test.skip=true
    :: 删除版本号文件
    cd %versionPath%
    del version.jsp
    del version.html
    :: copy文件到desktop
    XCOPY D:\javaProgram\actminisite\trunk\code\target\actminisite.jar C:\Users\Administrator\Desktop\ /Y/F
    echo package success
*************感谢您的阅读*************