再了解打包瘦身优化之前,我理解的是纯压缩代码,减小包体大小,结果其实并不是,具体情况如下:
其实瘦身就是把自己的代码和引用的库分离开,假如包体不瘦身,那么jar包有10M,那么瘦身后就是jar包20k,lib文件夹9.8M
如何瘦身:
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
...
<!-- 解决windows命令行窗口中文乱码 -->
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<layout>ZIP</layout>
<!-- 配置需要打包进项目的jar -->
<includes>
<!--
这里是填写需要包含进去的jar
必须项目中的某些某块,会经常变动,那么就应该将其坐标写进来
如果没有则non-exists,表示不打包依赖
-->
<include>
<groupId>non-exists</groupId>
<artifactId>non-exists</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 此插件用于将依赖包抽出 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!-- 是否排除传递性 -->
<excludeTransitive>false</excludeTransitive>
<!-- 是否去掉jar包版本信息 -->
<stripVersion>false</stripVersion>
<!-- 包含范围 -->
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置好了pom.xml后,我该如何启动?
java -jar -Dloader.path=./lib [jarname].jar
linux服务器自带nohup后台启动
nohup java -jar -Dloader.path=./lib [jarname].jar
新版宝塔现在对java项目变得非常友好了,可以直接部署springboot,那么在宝塔里的启动脚本如下:
/usr/bin/java -jar -Dloader.path=./lib -Xmx1024M -Xms256M /www/wwwroot/[jarname].jar --server.port=8080
如上配置好后,未来修改代码再上传的话只需要上传20k的jar包即可!