Springboot自定义打包

学习记录1--Springboot的Maven自定义打包

在以往的开发中,Springboot应用默认打成一个jar,虽然方便但是会有很多问题,比如不方便修改配置文件,修改一个处代码就要更新整包等等,而maven中也有这样的插件可以给我们提供帮助

  • 复制引用依赖插件
<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>
        </execution>
    </executions>
    <configuration>
        <!-- 指定输出依赖的位置 -->
        <outputDirectory>lib</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>false</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
    </configuration>
</plugin>
  • 使用jar插件打成jar包
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                 <!-- 指定依赖加载路径 -->
                <classpathPrefix>lib/</classpathPrefix>
                 <!-- 指定主类 -->
                <mainClass>club.menglinking.wx.WxApplication</mainClass>
            </manifest>
        </archive>
        <excludes>
            <!-- 排除配置文件和静态文件 -->
            <exclude>**/*.properties</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>static/**</exclude>
            <exclude>templates/**</exclude>
        </excludes>
    </configuration>
</plugin>                    
  • 使用assembly自定义打包
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
             <!-- 打包配置文件的路径 -->
            <descriptor>bin/package.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <!-- 绑定插件到生命周期 -->
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • 打包示例配置文件
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <!-- 保证唯一 -->
    <id>weChat</id>
    <!-- 打成的分发包格式,推荐windows和linux双平台包 -->
    <formats>
        <format>zip</format>
        <format>tar.gz</format>
    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>bin</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.bat</include>
                <include>*.sh</include>
                <include>*.xml</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>lib</directory>
            <outputDirectory>lib/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>/config</outputDirectory>
            <includes>
                <include>*.properties</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/static</directory>
            <outputDirectory>/static</outputDirectory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>README.md</source>
            <outputDirectory>/</outputDirectory>
        </file>
    </files>
</assembly>

打包完成之后,配置文件,静态文件,依赖和代码分离,修改代码后只需要把打成的jar覆盖即可完成增量更新(在没有新引入依赖的情况下),生成的jar会远远小于springboot打的全量包

原文地址:https://www.cnblogs.com/xwu36/p/13204357.html