使用assembly打包spring boot应用,解决胖jar问题

用assembly打包spring boot应用,解决胖jar问题

一、pom.xml插件配置

不使用spring-boot默认打包形式,统计打包成普通的jar.其jar的META-INF配置classpath
配置打包插件配置,在配置如下:

 1  <plugins>
 2             <plugin>
 3                 <groupId>org.apache.maven.plugins</groupId>
 4                 <artifactId>maven-jar-plugin</artifactId>
 5                 <version>3.1.0</version>
 6                 <configuration>
 7                     <archive>
 8                         <manifest>
 9                             <mainClass>com.xxx.App</mainClass>
10                             <addClasspath>true</addClasspath>
11                             <classpathPrefix>lib/</classpathPrefix>
12                         </manifest>
13                         <manifestEntries>
14                             <Class-Path>./</Class-Path>
15                         </manifestEntries>
16                     </archive>
17                     <includes>
18                         <include>**/*.class</include>
19                     </includes>
20                 </configuration>
21             </plugin>
22 
23             <plugin>
24                 <groupId>org.apache.maven.plugins</groupId>
25                 <artifactId>maven-assembly-plugin</artifactId>
26                 <configuration>
27                     <!-- not append assembly id in release file name -->
28                     <appendAssemblyId>false</appendAssemblyId>
29                     <descriptors>
30                         <descriptor>src/main/assemble/package.xml</descriptor>
31                     </descriptors>
32                 </configuration>
33                 <executions>
34                     <execution>
35                         <id>make-assembly</id>
36                         <phase>package</phase>
37                         <goals>
38                             <goal>single</goal>
39                         </goals>
40                         <configuration>
41                         </configuration>
42                     </execution>
43                 </executions>
44             </plugin>
45             <plugin>
46                 <groupId>org.apache.maven.plugins</groupId>
47                 <artifactId>maven-compiler-plugin</artifactId>
48                 <configuration>
49                     <source>1.8</source>
50                     <target>1.8</target>
51                     <skip>true</skip>
52                 </configuration>
53             </plugin>
54 
55             <plugin>
56                 <groupId>org.apache.maven.plugins</groupId>
57                 <artifactId>maven-surefire-plugin</artifactId>
58                 <version>2.22.2</version>
59                 <configuration>
60                     <skip>true</skip>
61                 </configuration>
62             </plugin>
63         </plugins>
二、package.xml插件配置

归类文件,启动脚本放一目录,sql脚本放在一个目录,依赖包放在一个目录

1. bin目录放启用或停止脚本
2. conf存放相关配置,也是src/main/resouces/里的所有,程序运行时,将此目录加入到classpath中
3. lib/存放所有依赖的jar包
package.xml配置如下:
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
 3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4           xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3
 5             http://maven.apache.org/xsd/assembly-1.1.3.xsd">
 6     <id>package</id>
 7     <formats>
 8         <format>tar.gz</format>
 9         <format>dir</format>
10     </formats>
11     <includeBaseDirectory>true</includeBaseDirectory>
12     <files>
13         <file>
14             <source>README</source>
15         </file>
16     </files>
17     <fileSets>
18         <fileSet>
19             <directory>src/main/bin</directory>
20             <outputDirectory>./bin</outputDirectory>
21             <fileMode>0755</fileMode>
22             <directoryMode>0755</directoryMode>
23         </fileSet>
24         <fileSet>
25             <directory>src/main/resources</directory>
26             <outputDirectory>./conf</outputDirectory>
27             <fileMode>0755</fileMode>
28             <directoryMode>0755</directoryMode>
29         </fileSet>
30         <fileSet>
31             <directory>${project.build.directory}</directory>
32             <outputDirectory>./lib</outputDirectory>
33             <includes>
34                 <include>*.jar</include>
35             </includes>
36         </fileSet>
37     </fileSets>
38     <dependencySets>
39         <dependencySet>
40             <outputDirectory>lib</outputDirectory>
41             <scope>runtime</scope>
42             <excludes>
43                 <exclude>${groupId}:${artifactId}</exclude>
44             </excludes>
45         </dependencySet>
46     </dependencySets>
47 </assembly>
三、启用脚本

最后一步就是java启动脚本了,注意java启动时,相关配置


bin目录下的启动脚本内容如下

WORK_ROOT=$(cd "$(dirname "$0")"; pwd)
JAVA_OPTS="$JAVA_OPTS -Drun_dir=$WORK_ROOT"
JAVA_OPTS="$JAVA_OPTS -Dclient.enczoding.override=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN"
JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=../lib -Djava.library.path=../lib -cp ../conf"

nohup java $JAVA_OPTS com.xxx.App $@ > ../run.log  &

 







posted @ 2020-10-26 13:47  quentin2017  阅读(498)  评论(0)    收藏  举报