springboot 打zip包(避免发包时替换整个大jar包,只需替换zip里面程序jar)

本文介绍如何在SpringBoot项目中通过修改pom.xml和package.xml配置,实现仅替换ZIP内程序jar,避免每次更新发布整个大jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pom.xml里面build配置配置 一般只需要改红色标注的位置

<build>
    <finalName>provider-extract-smba-output-upload</finalName>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <!-- The configuration of the plugin -->
            <configuration>
                <!-- Configuration of the archiver -->
                <archive>
                    <!--生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <!-- Manifest specific configuration -->
                    <manifest>
                        <!-- 是否要把第三方jar放到manifest的classpath中 -->
                        <addClasspath>true</addClasspath>
                        <!-- 生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/ -->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!-- 应用的main class -->
                        <mainClass>com.example.demo.DemoApplication</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        <!-- The configuration of maven-assembly-plugin -->
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <groupId>org.apache.maven.plugins</groupId>
            <version>2.4</version>
            <!-- The configuration of the plugin -->
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <!-- 指定package.xml的路径 -->
                    <descriptor>src/main/resources/package.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-zip</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
       <!-- 跳过单元测试 -->
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
         <skipTests>true</skipTests>
      </configuration>
   </plugin>
</plugins>
</build>
    </plugins>
</build>

package.xml配置

<?xml version="1.0" encoding="UTF-8"?>  
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">  
    <id>release</id>  
    <formats>  
        <format>zip</format>  
    </formats>  
    <includeBaseDirectory>true</includeBaseDirectory> 
    <fileSets>  
        <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->  
        <fileSet>  
            <directory>${project.basedir}</directory>  
            <outputDirectory>/</outputDirectory>  
            <includes>  
                <include>README*</include>  
                <include>LICENSE*</include>  
                <include>NOTICE*</include>  
            </includes>  
        </fileSet>  
        <!-- 把项目的配置文件,打包进zip文件的config目录 -->  
        <fileSet>  
            <directory>src/main/resources</directory>
            <includes>  
                <include>*.xml</include>  
                <include>*.properties</include>  
                <include>*.yml</include>
                <include>*.bat</include>
                <include>*.sh</include>
                <include>*.txt</include>
            </includes>  
            <outputDirectory>/</outputDirectory> 
        </fileSet>  
          
        <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->  
        <fileSet>  
            <directory>bin</directory>  
            <outputDirectory>/</outputDirectory>  
        </fileSet>  
        <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->  
        <fileSet>  
            <directory>${project.build.directory}</directory>  
            <outputDirectory></outputDirectory>  
            <includes>  
                <include>*.jar</include>  
            </includes>  
        </fileSet>  
    </fileSets>  
      <!-- Adds dependencies to zip package under lib directory -->  
    <dependencySets>  
        <dependencySet>  
            <!-- 
               不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 
           -->  
            <useProjectArtifact>false</useProjectArtifact>  
            <outputDirectory>lib/</outputDirectory>  
            <unpack>false</unpack>  
        </dependencySet>  
    </dependencySets>  
</assembly>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值