welcome to xlongwei.com

欢迎大家一起学习、交流、分享


QQ群:162333776 邮箱:admin@xlongwei.com

spring boot 打包瘦身


分类 Java   关键字 分享   标签 java   spring   maven   发布 hongwei  1534240922162
注意 转载须保留原文链接,译文链接,作者译者等信息。  
spring boot 构建的jar包可以直接执行确实很方便,但有时不想每次都把几乎不变的依赖jar打包进来,因此有了打包瘦身的方案,参考文章:https://blog.csdn.net/ssrc0604hx/article/details/54175027

正常打包,提取lib目录,部署时将lib目录上传到服务器即可
# mvn clean package -Dmaven.test.skip=true
# jar xvf target/app.jar BOOT-INF/lib/

打包时排除依赖jar
# mvn dependency:tree|grep +-|sed 's/.*+- / /g'|sed 's/:.*/,/g'|sort|uniq   //依赖groupId
# vi pom.xml
  <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
          <layout>ZIP</layout>
          <excludeGroupIds>
        aopalliance,
        ch.qos.logback
           //排除依赖groupId
          </excludeGroupIds>
          <excludeArtifactIds>
        okio,
        xpp3_min
            //排除依赖artifactId,个别输出有误:json-lib-2.4-jdk15.jar
          </excludeArtifactIds>
      </configuration>
  </plugin>
# mvn clean package -Dmaven.test.skip=true   //排除依赖groupId后再次打包
# jar tvf target/app.jar|grep -n '\.jar$'|sed 's/.*\/lib\///g'|sed 's/-[^-]*$/,/g'   //输出依赖artifactId
# vi pom.xml   //排除依赖artifactId,然后再次打包
# mvn clean package -Dmaven.test.skip=true   //可以再次检查依赖artifactId
# ll target   //可以看到jar和jar.original相差不大了,

运行,线上运行时修正loader.path路径即可,wiki整理:https://wiki.xlongwei.com/doku.php?id=spring:boot
java -Dloader.path="BOOT-INF/lib/" -jar target/app.jar