使用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 &
山外青山楼外楼
青山与小楼已不冉有
紧闭的窗前你别等候
大雁飞过菊花香满楼、
听一听看一看想一想
时光呀流水匆匆过
哭一哭笑一笑不用说
人生能有几回合

浙公网安备 33010602011771号