iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot打成jar包瘦身方法总结
  • 885
分享到

SpringBoot打成jar包瘦身方法总结

springboot打成jar包springboot 瘦身springboot jar包瘦身 2022-12-19 09:12:23 885人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录正常打包瘦身方法一:Dloader.path指定依赖包位置瘦身方法二:配置文件里指定依赖包位置总结 正常打包 <build> <plugins

正常打包

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-Maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

瘦身方法一:Dloader.path指定依赖包位置

修改maven打包参数

<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <configuration>
               <layout>ZIP</layout>
                <includes>
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                    <include>
                        <groupId>com.huacloud.tax.rpc</groupId>
                        <artifactId>common</artifactId>
                    </include>
                </includes>
           </configuration>
       </plugin>
   </plugins>
</build>
  • layout

用来配置可执行jar包中Main-Class的类型,一定要设置为 ZIP,使打的jar包中的Main-Class为PropertiesLauncher 。

  • includes

将需要保留的jar包,按照groupId和artifactId(注意两个都是必填项)include进来。

nothing 代表不存在的依赖包,意思就是什么依赖包都不引入

common是引入的公共服务模块。 maven打包

命令:mvn clean package install ‘-Dmaven.test.skip=true’

查看xxxx.jar里面META-INF目录下的MANIFEST.MF文件:

Main-Class的值为:PropertiesLauncher

从瘦身前打包中拷贝中lib包

执行:java -Dloader.path=“D:\WEB\lib” -jar xxx-thin.jar

启动参数loader.path配置外置依赖包的加载路径

瘦身方法二:配置文件里指定依赖包位置

1.配置

<build>
   <finalName>打出jar包的名称</finalName>
    <plugins>
      <!-- 1、编译出不带 lib 文件夹的Jar包 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--表示编译版本配置有效-->
                <fork>true</fork>
                <!--引入第三方jar包时,不添加则引入的第三方jar不会被打入jar包中-->
                <includeSystemScope>true</includeSystemScope>
                <!--排除第三方jar文件-->
                <includes>
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <Goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    
    	<!-- 2、完成对Java代码的编译,可以指定项目源码jdk版本,编译后的jdk版本,以及编码 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <!-- 源代码使用的JDK版本 --> 
                <source>${java.version}</source>
                <!-- 需要生成的目标class文件的编译版本 -->
                <target>${java.version}</target>
                <!-- 字符集编码 -->
                <encoding>UTF-8</encoding>
                <!-- 用来传递编译器自身不包含但是却支持的参数选项 -->  
                <compilerArguments>
                        <verbose/>
                        <!-- windwos环境(二选一) -->
                        <!--<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>-->
                        <bootclasspath>D:/App/jdk/jdk1.8.0_221/jre1.8.0_221/lib/rt.jar;D:/App/jdk/jdk1.8.0_221/jre1.8.0_221/lib/jce.jar</bootclasspath>
                        <!-- linux环境(二选一) -->
                        <!--<bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>-->
                    </compilerArguments>
            </configuration>
        </plugin>

        <!-- 3、将所有依赖的jar文件复制到target/lib目录 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                      <!--复制到哪个路径,${project.build.directory} 缺醒为 target,其他内置参数见下面解释-->
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        
    	<!-- 4、指定启动类,指定配置文件,将依赖打成外部jar包 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <arcHive>
                    <manifest>
                        <!-- 是否要把第三方jar加入到类构建路径 -->
                        <addClasspath>true</addClasspath>
                        <!-- 外部依赖jar包的最终位置 -->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!-- 项目启动类 -->
                        <mainClass>org.jeecg.JeecgSystemApplication</mainClass>
                    </manifest>
                </archive>
                <!--资源文件不打进jar包中,做到配置跟项目分离的效果-->
                <excludes>
                    <!-- 业务jar中过滤application.properties/yml文件,在jar包外控制 -->
                    <exclude>*.properties</exclude>
                    <exclude>*.xml</exclude>
                    <exclude>*.yml</exclude>
                </excludes>
            </configuration>
        </plugin>

    </plugins>
</build>

includeSystemScope:jar包分两种

  • 一种是spring、mybatis等这种项目依赖的
  • 一种是手动引入的第三方 jar 依赖

如果该参数不设置为 true 的话是不能被打包进来的

includes:排除项目中所有的 jar

我们需要将打包插件替换为 maven-jar-plugin,然后使用该插件拷贝依赖到 jar 到外面的 lib 目录

  • maven-compiler-plugin:

完成对Java代码的编译,可以指定项目源码的jdk版本、编译后的jdk版本,以及编码,如果不写这个插件也是没问题的,不写会使用默认的 jdk 版本来处理,只是这样容易出现版本不匹配的问题,比如本地maven环境用的3.3.9版本,默认会使用jdk1.5进行编译,而项目中用的jdk1.8的编译环境,那就会导致打包时编译不通过。

  • maven-dependency-plugin:

作用就是将所有依赖的jar文件复制到指定目录下

  • maven-jar-plugin:

主要作用就是将maven工程打包成jar包。

  • 打包时排除资源配置文件,
  • 排除了配置文件那么项目启动是怎么读取呢?配置文件有这么一个默认的优先级

当前项目config目录下 > 当前项目根目录下 > 类路径config目录下 > 类路径根目录下
因此只需要

2.打包:clean package

MANIFEST.MF文件内容:

3.启动:java -jar xxx.jar

MANIFEST.MF文件指定了依赖包位置所以不需要Dloader.path指定依赖包

总结 

到此这篇关于SpringBoot打jar包瘦身方法的文章就介绍到这了,更多相关SpringBoot打jar包瘦身内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot打成jar包瘦身方法总结

本文链接: https://www.lsjlt.com/news/175205.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot打成jar包瘦身方法总结
    目录正常打包瘦身方法一:Dloader.path指定依赖包位置瘦身方法二:配置文件里指定依赖包位置总结 正常打包 <build> <plugins...
    99+
    2022-12-19
    springboot打成jar包 springboot 瘦身 springboot jar包瘦身
  • 使用springboot 打包插件去除jar包瘦身
    1、pom文件配置 1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径 便于后续tomcat启动指定依赖包路径 <!--拷贝...
    99+
    2024-04-02
  • 使用maven war包打包去除jar包瘦身
    1、pom文件配置 1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径 便于后续tomcat启动指定依赖包路径 <!--拷贝...
    99+
    2024-04-02
  • Springboot打包成jar发布的操作方法
    目录打包的方式如何打包?所遇到的问题,及解决办法解决办法如何运行它呢?看看效果关于运行命令的话可以去了解相关的命令打包的方式 打包成jar包打包成war包区别:jar包内置了tomc...
    99+
    2023-02-28
    Springboot打包成jar发布 Springboot打包jar
  • springboot项目如何打包成jar包
    本篇内容主要讲解“springboot项目如何打包成jar包”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot项目如何打包成jar包”吧!一、为什么打包项目开发完毕后会将前后端应...
    99+
    2023-06-30
  • Springboot怎么打包成jar发布
    这篇“Springboot怎么打包成jar发布”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Springboot怎么打包成j...
    99+
    2023-07-05
  • 如何使用Springboot打成jar包thymeleaf
    这篇文章主要介绍了如何使用Springboot打成jar包thymeleaf,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Springboot打成jar包thymeleaf1...
    99+
    2023-06-25
  • 详细总结IDEA中打jar包的两种方式
    目录一、前言二、不使用Maven直接打Jar包 三、使用Maven打jar包一、前言 在讲这两种方式之前,我们先来说明一下什么是java中的jar文件 jar (Java Archi...
    99+
    2024-04-02
  • PyInstaller安装包瘦身的方法是什么
    今天小编给大家分享一下PyInstaller安装包瘦身的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装包瘦身直...
    99+
    2023-07-05
  • springboot项目打包成jar包的图文教程
    目录一、为什么打包二、如何打包(1)使用IDEA进行打包(2)使用maven进行打包三、运行jar包四、注意一、为什么打包 项目开发完毕后会将前后端应用打包,然后部署到服务器上运行。...
    99+
    2024-04-02
  • 使用Springboot打成jar包thymeleaf的问题
    目录Springboot打成jar包thymeleaf1.使用springboot打成jar包2. controller的书写springboot + thymeleaf jar包运...
    99+
    2024-04-02
  • 使用eclipse 实现将springboot项目打成jar包
    前言: 对于经验老道的人员可以路过,但是对于经验比较少的开发者来说,不得不是一篇好的博文,可以让大家少走一些弯路和无用的思考。 下面进入正题!!! 一、首先修改eclipse运行环境...
    99+
    2024-04-02
  • java使用main方法如何实现打包成jar
    java使用main方法如何实现打包成jar?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java打包成jarjar -cvf [jar包的名字] [需要打包的文件]...
    99+
    2023-05-31
    java jar main方法
  • 如何使用eclipse实现将springboot项目打成jar包
    这篇文章主要为大家展示了“如何使用eclipse实现将springboot项目打成jar包”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用eclipse实现将springboot项目打成j...
    99+
    2023-06-20
  • jar包的各种启动方式超详细总结
    目录一、各种启动方式1.java -jar2.java -jar test.jar &3.nohup java -jar test.jar4.nohup java -jar ...
    99+
    2023-05-14
    怎么启动jar包 启动jar包的命令 jar包启动详解
  • web.xml SpringBoot打包可执行Jar运行SpringMVC的方法是什么
    这篇文章主要讲解了“web.xml SpringBoot打包可执行Jar运行SpringMVC的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web.xml S...
    99+
    2023-07-05
  • 总结Pyinstaller打包的高级用法
    一、安装pyinstaller PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包。 因是第三方包,所以需要安装一下: pip install ...
    99+
    2024-04-02
  • SpringBoot多种打包方法
    方法1. 使用mvn插件打包(推荐) pom代码 org.apache.maven.plugins ...
    99+
    2023-10-24
    spring boot java maven
  • SpringBoot项目jar和war打包部署方式详解
    目录jar与warjar包部署运行war包部署运行jar与war Spring Boot项目开发完成后,需要以jar或war的方式将项目打包部署到测试开发环境。 jar即Java A...
    99+
    2024-04-02
  • springboot读取文件,打成jar包后访问不到的解决
    springboot读取文件,打成jar包后访问不到 最新开发出现一种情况,springboot打成jar包后读取不到文件,原因是打包之后,文件的虚拟路径是无效的,只能通过流去读取。...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作