springboot 分离依赖 lib 打包

springboot工程直接打包, 会把项目的代码, 配置文件依赖lib都集成在一起.文件体积大所以在公网传输的时候非常麻烦.

配置

以下配置可以实现lib单独打包.

  1. 去掉spring-boot-maven-plugin打包插件
  2. 添加 maven-jar-plugin
  3. maven-dependency-plugin(依赖拷贝插件,主要用于将maven依赖库拷贝出来)
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
<build>
<plugins>
<!-- springboot 打包插件 -->
<!--
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.zhaowudi.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
-->

<!-- maven 打包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
<!-- 指定入口类 -->
<mainClass>com.zhaowudi.Application</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>

<!-- 拷贝依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>

</plugins>
</build>

启动

  1. 新建文件夹”某某项目-端口”, 新建子文件夹”config”.
  2. 把target的 lib 和 工程jar拷贝到项目文件夹
  3. 把jdk, yml, log4j2.xml拷贝到config文件夹
  4. 新建启动.bat, 并执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
echo **********端口号可修改********
set port=9999

echo **********设置jar文件********
for /f %%A in ('dir /b *.jar') do set jarName=%%A
echo ******************************
echo **********配置提示 -Xmx最大m -Xms最小m -Xmn为Xmx 的1/3 ********

for /f "tokens=5" %%i in ('netstat -aon^|findstr "%port%"') do (
taskkill /pid %%i /F
)

title 服务名称:%jarName%-端口:%port% 启动日期:%date%-%time%

chcp 65001
set JAVA_HOME=%cd%\config\jdk
set path=%JAVA_HOME%\bin
java -version

java -server -Xmx4g -Xms2g -Dfile.encoding=utf-8 -Dloader.path=lib -jar %jarName% --server.port=%port%