simple-starter-package
# 简介
自定义Maven构建打包逻辑,将常用脚本及可执行文件统一打包
在执行mvn package或mvn install时打包出 xxx--deploy.zip部署压缩包
压缩包包含:服务启动脚本、可执行Jar包、配置文件、git版本文件(可选)
文件名 | 功能 | 说明 |
---|---|---|
application.yml | 配置文件 | 工程源码中的配置文件 |
config | 配置文件夹(可选) | 工程配置源码中的文件夹-目录下为子配置文件 |
docker-compose.yml | Docker编排文件 | 网络模式为Host,将配置文件映射进容器中 |
Dockerfile | Docker镜像构建文件 | 基于openjdk:17-oracle |
git.properties | git版本文件(可选) | 输出构建时的Git版本信息 |
Readme.md | 操作说明 | 各脚本使用方式说明 |
shell_java_start.sh | Shell启动脚本 | 使用原生Java命令启动 |
shell_java_stop.sh | Shell关闭脚本 | 根据运行Pid进行关闭进程 |
xxx-exec.jar | Jar源文件 | 可执行Jar包 |
win_java_start.bat | Windows启动脚本 | 使用原生Java命令启动 |
# 模板源码
参考模块:
simple-demo-package (opens new window)
# 使用说明
# Pom.xml文件
# 父类
方式一:
需要继承spring-boot-starter-parent
原因:resources资源文件下的启动脚本中使用 Pom.xml变量 "@xx@"
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>xxxx</version>
</parent>
1
2
3
4
5
2
3
4
5
# 版本标识
需要声明本工程版本号
原因:docker启动脚本中构建容器版本需使用变量@project.version@
<version>2023.5.2.0-SNAPSHOT</version>
1
# 依赖引入
需要引入simple-starter-package依赖
原因:使用依赖中的resources文件夹下的资源文件
文件名 | 功能 | 说明 |
---|---|---|
docker-compose.yml | Docker编排文件(引用Pom.xml变量) | 首次启动将自动构建镜像,若在版本不变下需要更新镜像需先移除镜像 |
Dockerfile | Docker镜像构建文件(引用Pom.xml变量) | 基于openjdk:17-oracle,将可执行Jar包复制进镜像中运行 |
logback-spring.xml | 日志配置 | 配置按照每天生成日志文件 |
Readme.md | 操作说明(引用Pom.xml变量) | 各脚本使用方式说明 |
shell_java_start.sh | Shell启动脚本(引用Pom.xml变量) | 使用原生Java命令启动,运行可执行Jar包 |
shell_java_stop.sh | Shell关闭脚本(引用Pom.xml变量) | 根据运行Pid进行关闭进程 |
win_java_start.bat | Windows启动脚本(引用Pom.xml变量) | 使用原生Java命令启动,运行可执行Jar包 |
<dependency>
<groupId>cn.iosd</groupId>
<artifactId>simple-starter-package</artifactId>
</dependency>
1
2
3
4
2
3
4
# 依赖声明
使用依赖声明,可减免依赖引入时都需要配置版本号
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<!-- SimpleDependencies 依赖配置 -->
<dependency>
<groupId>cn.iosd</groupId>
<artifactId>simple-dependencies</artifactId>
<version>${ok-simple.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 构建配置-必填
指定finalName:原因为各脚本有将构建出的可执行jar进行操作
指定classifier为exec:原因为各脚本有将构建出的可执行jar(包含后缀exec)进行操作
插件maven-assembly-plugin:引入自定义压缩包逻辑文件
插件声明pluginManagement:指定使用自定义压缩包逻辑文件-此声明可放置在一级Pom中,子工程便不需要再写
<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<!-- SpringBoot多模块打包:spring-boot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar-->
<classifier>exec</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<dependencies>
<!-- 包含simple-assembly文件,自定义压缩包逻辑 -->
<dependency>
<groupId>cn.iosd</groupId>
<artifactId>simple-starter-package</artifactId>
<version>${ok-simple.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- 插件声明 可放在首层 指定使用simple-assembly -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>deploy</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<descriptorRefs>
<descriptorRef>simple-assembly</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
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
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
# 构建配置-可选
可选构建时增加输出增加git版本文件
<!-- 构建输出增加git版本文件 -->
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
</plugin>
1
2
3
4
5
2
3
4
5
若父类不是继承 spring-boot-starter-parent 则需要在 插件声明中添加
<!-- 插件声明 可放在首层 打包时生成git.properties(可选) -->
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>5.0.1</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
</configuration>
</plugin>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 配置文件
把项目配置文件复制到压缩包中,resources资源夹列表如下
resources
|--application.yml 配置文件
|--config 配置文件夹下所有文件
|--*.*
1
2
3
4
2
3
4
# 效果如下
执行 mvn install后在target目录下生成xxx-deploy.zip部署包
上次更新: 2024/03/25, 02:28:08