使用Springboot 打jar包实现分离依赖lib和配置

作者:带带大师兄啊 时间:2023-01-29 18:35:29 

打jar包实现分离依赖lib和配置

为了业务需要配置文件和jar分离,便于使用者修改配置信息,在网上找了很久,最终找到一个简单有效的方法。

操作步骤

打开project工程的pom.xml文件,将下列配置粘贴到pom文件中:

<properties>
       <java.version>1.8</java.version>
       <!--在此配置打包输出的路径-->
       <directory>d:/out/</directory>
   </properties>
<build>
       <plugins>
           <!--上线部署 JAR启动分离依赖lib和配置-->
                       <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-resources-plugin</artifactId>
                           <version>3.1.0</version>
                       </plugin>
                       <plugin>
                           <groupId>org.springframework.boot</groupId>
                           <artifactId>spring-boot-maven-plugin</artifactId>
                       </plugin>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-jar-plugin</artifactId>
               <configuration>
                   <!--不打包资源文件-->
                   <excludes>
                       <exclude>*.**</exclude>
                   </excludes>
                   <archive>
                       <manifest>
                           <addClasspath>true</addClasspath>
                           <classpathPrefix>lib/</classpathPrefix>
                           <!--jar包不包含唯一版本标识-->
                           <useUniqueVersions>false</useUniqueVersions>
                           <!--程序启动类application.java的路径-->
                           <mainClass>com.sy.xx.Application</mainClass>
                       </manifest>
                       <!-- 指定配置文件目录,这样jar运行时会去找到同目录下的config文件夹下查找 -->
                       <manifestEntries>
                           <Class-Path>config/</Class-Path>
                       </manifestEntries>
                   </archive>
                   <outputDirectory>${directory}</outputDirectory>
               </configuration>
           </plugin>
           <!--拷贝依赖 copy-dependencies-->
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-dependency-plugin</artifactId>
               <executions>
                   <execution>
                       <id>copy-dependencies</id>
                       <phase>package</phase>
                       <goals>
                           <goal>copy-dependencies</goal>
                       </goals>
                       <configuration>
                           <outputDirectory>
                               ${directory}/lib/
                           </outputDirectory>
                       </configuration>
                   </execution>
               </executions>
           </plugin>
           <!--拷贝资源文件 copy-resources-->
           <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <executions>
                   <execution>
                       <id>copy-resources</id>
                       <phase>package</phase>
                       <goals>
                           <goal>copy-resources</goal>
                       </goals>
                       <configuration>
                           <resources>
                               <resource>
                                   <directory>src/main/resources</directory>
                                   <!-- 指定参与构建的resoures-->
                                   <includes>
                                       <include>*.**</include>
                                   </includes>
                               </resource>
                           </resources>
                           <outputDirectory>${directory}/config</outputDirectory>
                       </configuration>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

接下来使用maven package打包即可:

使用Springboot 打jar包实现分离依赖lib和配置

打包之后的样子:

使用Springboot 打jar包实现分离依赖lib和配置

这样就完成了配置文件以及lib包和jar的分离了,并且jar在运行的时候会默认去读取config文件夹中的配置,修改起来非常方便。

Springboot中jar包分离(分离lib包)

jar包分离介绍

springboot构建jar部署,通过使用 java -jar xxx.jar 命令启动服务,非常方便。

但是通过maven构建的jar包含 \BOOT-INF\lib\下的所有依赖jar包,导致jar包文件太大。

本文将lib文件夹下所依赖的jar包分离出来,解决文件过大问题。

jar包分离实施步骤

(1)按照正常的springboot项目打包方式,对项目进行打包package,其打包后目录如下:

|--META-INF
|--BOOT-INF
   |--classes
   |--lib
|--org

打完包后,进行解压。找到\BOOT-INF\lib文件夹,将lib文件夹复制出来,后续使用。

其中\BOOT-INF\lib目录下存放着所有的依赖jar包,ojdbc8-19.8.0.0.jar / lombok-1.18.16.jar / spring-boot-2.4.1.jar &hellip; 占用了大量的空间。jar包分离就是将其独立开来。

(2)通过修改pom.xml中的一部分配置,再次打包,此时打包的内容已经排除了其依赖的各种jar包。

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <!--start-->
   <configuration>
       <!--这里对应项目的主入口-->
       <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass>
       <layout>ZIP</layout>
       <includes>
           <include>
               <groupId>nothing</groupId>
               <artifactId>nothing</artifactId>
           </include>
       </includes>
   </configuration>
   <executions>
       <execution>
           <goals>
               <goal>repackage</goal>
           </goals>
       </execution>
   </executions>
   <!--end-->

</plugin>

1:直接重新打包,即可

2:如果通过命令:在idea工具中打入:mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package

两种方式打包都可以,最终的jar包已经排除掉了lib文件。推荐第一种方便快捷。

(3)将第一次打包提取出来的lib文件夹和第二次打的jar包放在同一个目录下,执行以下命令,启动项目:

使用Springboot 打jar包实现分离依赖lib和配置

java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar

小结一下

springboot项目什么都不用动,直接通过maven工具package打包,进行解压。并把\BOOT-INF\lib目录下的lib文件夹整个内容复制出来。(取出lib文件夹的内容)

在项目pom.xml中的plugin中加入以下内容,注意层级关系以及要把入口类改成对应的项目名。(start到end的内容)

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <!--start-->
   <configuration>
       <!--这里对应项目的主入口-->
       <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass>
       <layout>ZIP</layout>
       <includes>
           <include>
               <groupId>nothing</groupId>
               <artifactId>nothing</artifactId>
           </include>
       </includes>
   </configuration>
   <executions>
       <execution>
           <goals>
               <goal>repackage</goal>
           </goals>
       </execution>
   </executions>
   <!--end-->

</plugin>

修改后再次package打包,这次的jar包就没有了依赖内容,文件较小。把生成的jar包放在与首次打包生成的lib文件夹同目录下。

执行启动脚本或者命令即可

java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar

来源:https://blog.csdn.net/qq_41579515/article/details/119562049

标签:Springboot,jar,分离,依赖,lib
0
投稿

猜你喜欢

  • C# linq查询之动态OrderBy用法实例

    2023-11-04 04:22:56
  • Android ViewModel创建不受横竖屏切换影响原理详解

    2023-08-31 21:21:20
  • Java SE求解汉诺塔问题的示例代码

    2022-05-10 23:44:30
  • Spring Boot conditional注解用法详解

    2022-03-19 02:32:25
  • Android画板开发之基本画笔功能

    2023-01-09 07:26:21
  • JavaWeb实现文件上传与下载的方法

    2023-12-23 04:42:56
  • SpringBoot 如何编写配置文件

    2023-07-14 10:38:24
  • Java struts2 validate用户登录校验功能实现

    2022-03-04 02:30:57
  • Android消息机制Handler深入理解

    2023-03-13 13:44:04
  • 详解commons-pool2池化技术

    2021-09-10 10:56:29
  • Android实现将一个Activity设置成窗口样式的方法

    2023-07-04 18:56:38
  • Spring MVC中自定义拦截器的实例讲解

    2023-12-19 05:09:04
  • C# 给PPT中的图表添加趋势线的方法

    2022-02-27 10:18:40
  • Android实现控件拖动效果

    2021-11-05 09:02:31
  • Android开发从相机或相册获取图片裁剪

    2022-11-09 01:52:17
  • Android视频悬浮窗口实现的示例代码

    2022-08-01 06:50:33
  • Python基于pyjnius库实现访问java类

    2022-01-03 12:29:06
  • Java泛型<T> T与T的使用方法详解

    2021-07-12 10:58:42
  • 在IntelliJ IDEA中多线程并发代码的调试方法详解

    2022-01-09 03:05:45
  • C#数据绑定(DataBinding)简单实现方法

    2021-10-09 21:13:22
  • asp之家 软件编程 m.aspxhome.com