-
背景
生产环境中,需要本地打包上传服务器,而本地打包时,jar中会同时将项目依赖也打入进去,造成jar体积过大,为了减小运行jar包的体积,可以做如下配置修改。
修改方法
修改项目子模块xxx-xxx-server
中的pom文件。
- 在
spring-boot-maven-plugin
中增加configuration
配置,并指定启动类 - 增加
maven-dependency-plugin
依赖打包插件
POM中 build 配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>../../src/main/filters/config-${profile.active}.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
<mainClass>com.xxx.v2x.ControlServerApplication</mainClass>
<layout>ZIP</layout>
</configuration>
</plugin>
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<!--导出所有的 jar 包-->
<execution>
<id>copy-dependencies</id>
<!-- 在实际打包中,执行任何的必要的操作。 -->
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--指定的依赖路径-->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>2.6</version>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<!-- docker打包插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven-plugin.version}</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<tag>${tiannet-project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
**打包成功后,会在target目录下生成lib文件夹和响应的jar包
将lib包下的依赖上传至服务器后,每次只需要更改相应的jar文件就可以了
-
jar启动
修改后的jar中不在包含依赖,所以启动方式也有锁改变。需要使用参数-Dloader。path
指定lib所在路径。形如:
java -Dloader.path=./lib -jar xx-xx-server.jar