springboot jar thin

springboot,jar,thin · 浏览次数 : 159

小编点评

**方法一:使用 spring-boot-thin-launcher** 1. 在项目的 `pom.xml` 文件中添加以下依赖项: ```xml org.springframework.boot spring-boot-dependencies 2.5.14 pom import ``` 2. 在项目的 `thin.properties` 文件中添加以下配置: ``` repository.local=D:\\baseTool\\mavenRepository ``` 3. 使用 `java -Dthin.root=. -Dmaven.repo.local=D:\\baseTool\\mavenRepository -jar myapp.jarthin.root` 命令运行程序。 **方法二:将依赖的 jar 包放到一个目录下** 1. 在项目的 `pom.xml` 文件中添加以下依赖项: ```xml org.springframework.boot spring-boot-dependencies 2.5.14 jar compile ``` 2. 将依赖的 jar 包放到 `libs` 目录下。 3. 使用 `mvn clean install` 命令重新构建项目。 4. 使用 `java -jar myapp.jar` 命令运行程序。

正文

springboot jar thin

springboot 应用 jar 瘦身。springboot jar 太大。jar与依赖包分离。

两种方法,第一种,spring-boot-thin-launcher,他将依赖包以maven仓库的形式放到repository目录。

第二种,将依赖包以jar包的方式放到一个目录下,比如libs目录。

spring-boot-thin-launcher

这种方式是将jar所以依赖的项,从本地中找(比如windows系统,c:/Users/keboom/.m2),如果没有通过pom文件中的指定的maven仓库下载到默认${user.home}/.m2文件夹。下载到的位置可以通过thin.root指定,可以看下文,或者下文中GitHub中的详细文档。

springboot 依赖配置区别

https://www.cnblogs.com/niceboat/p/6230448.html

注意自己项目用的是spring-boot-dependencies还是spring-boot-starter-parent

如果是spring-boot-dependencies,那么需要写executions---goals---repackage

如果是spring-boot-starter-parent,那么可以试试廖雪峰的来做廖雪峰springboot jar 瘦身

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.5.14</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
           <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <!--如果用的是 spring-boot-dependencies ,那么需要配置 repackage -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

用上面的maven打包,回获得一个几十甚至几百兆的包。这个包可以独立运行,因为依赖都打包的这个包里面了。

我们用spring-boot-thin-layout

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.boot.experimental</groupId>
                        <artifactId>spring-boot-thin-layout</artifactId>
                        <version>1.0.30.RELEASE</version>
                    </dependency>
                </dependencies>
                 <!--如果用的是 spring-boot-dependencies ,那么需要配置 repackage -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

我用的windows,maven 本地仓库放到d盘了,而且我的pom里面也没配中央仓库这些,我用的命令为:

java -Dthin.root=. -Dmaven.repo.local=D:\baseTool\mavenRepository -jar myapp.jar

thin.root会将依赖放到myapp.jar 同级目录repository中,maven.repo.local指定从本地maven位置

image-20230810174424803

那么打包下来我是只有一百kb。

spring-boot-thin-launcher Github里面介绍了原理,和相关参数的作用。

将依赖的jar包copy到目录

第二种方式是,将依赖的jar包都放到一个文件夹下。

将spring-boot-maven-plugin插件删掉

添加一下两个插件

            <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>
                            <outputDirectory>
                                ${project.build.directory}/libs
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>libs/</classpathPrefix>
                            <mainClass>
                                com.example.MyAppApplication
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

然后进行 mvn clean install,或者用idea的界面去点就好。

image-20230811143026221

image-20230811143147276

这样程序运行后会去libs目录找相应的依赖包。

两者区别

第一种在能够连接到公司maven仓库时可以使用。但有些项目是部署到客户私有云的,通过给客户升级包的方式升级应用,那么使用第二种方式就更好用,只需要替换相应的jar文件即可。

与springboot jar thin相似的内容:

springboot jar thin

# springboot jar thin springboot 应用 jar 瘦身。springboot jar 太大。jar与依赖包分离。 两种方法,第一种,spring-boot-thin-launcher,他将依赖包以maven仓库的形式放到repository目录。 第二种,将依赖包以ja

springboot~封装依赖引用包jar还是pom,哪种更规范

将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式: 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他

SpringBoot Windows 自启动 - 通过 Windows Service 服务实现

将.NetCore 做成 Windows 服务 - JAVA 同理 、将jar包安装为windows服务-bat启动方式 将 SpringBoot 注册为 Windows Service服务 可实现 SpringBoot 项目在Windows 中随系统自启动。也不用担心被识关闭

[转帖]springboot指定端口的三种方式

https://blog.51cto.com/feirenraoyuan/5504099 第一配置文件中添加server.port=9090 第二在命令行中指定启动端口,比如传入参数 java -jar bootsample. jar -- server.port=9000 第三传入虚拟机系统属性

docker制作springboot镜像

以下步骤在具有Docker环境的Linux机器上操作。 把springboot-1.0.0.jar放到/usr/local/springboot目录下,并在该目录下创建Dockerfile文件,内容为: FROM openjdk:8-jdk-alpine ADD springboot-1.0.0.j

Springboot中自定义监听器

一、监听器模式图 二、监听器三要素 广播器:用来发布事件 事件:需要被传播的消息 监听器:一个对象对一个事件的发生做出反应,这个对象就是事件监听器 三、监听器的实现方式 1、实现自定义事件 自定义事件需要继承ApplicationEvent类,并添加一个构造函数,用于接收事件源对象。 该事件中添加了

网易面试:SpringBoot如何开启虚拟线程?

虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LT

京东面试:SpringBoot同时可以处理多少请求?

Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求 ? 准确的来说,Spring Boot 同时可以处理多少个请求,并不取决于 Spring Bo

美团二面:SpringBoot读取配置优先级顺序是什么?

理解并合理运用Spring Boot配置加载的优先级,对于保障应用的安全性、可维护性以及降低部署复杂度至关重要。特别是在大规模微服务架构中,合理的配置管理和迁移对于整体系统的稳定性有着不可忽视的作用。

【冷启动#2】实用的springboot tutorial入门demo

跟着官方文档熟悉一遍创建spring工程的步骤 https://spring.io/guides/gs/spring-boot https://juejin.cn/post/7077958723829760008 demo简介 整个demo的预期目标是: 管理一堆玩家的数据,数据库使用的是现成的我们