Spring boot 项目配置 Maven 资源文件分离打包

需要引入三个Maven插件:

  1. maven-jar-plugin:用于打包代码,并去除不需要一起打包的resource文件
  2. maven-assembly-plugin:主要用来打压缩包,配置我们打包后的整体文件结构
  3. maven-antrun-plugin:主要用来解压 maven-assembly-plugin 插件打好的压缩包,去掉打包完成后自己去手动解压的步骤

maven-jar-plugin 配置:

            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-jar-plugin</artifactid>
                <configuration>
                    <archive>
                        <manifest>
                            <!--指定入口类,必须全类名-->
                            <mainclass>com.andlinks.art.ArtApplication</mainclass>
                            <!-- 指定依赖的声明前缀,会在依赖Jar包的路径加上前缀lib/ -->
                            <classpathprefix>lib/</classpathprefix>
                            <!--为true后会将所有依赖Jar包的路径写入 MANIFEST Class-Path 中-->
                            <addclasspath>true</addclasspath>
                        </manifest>
                        <manifestentries>
                            <!--添加一个 Class-Path 路径-->
                            <class-path>resources/</class-path>
                        </manifestentries>
                    </archive>
                    <excludes>
                        <!--排除掉打包进Jar中的文件 **/ 表示所有目录,根据自己 实际情况选择排除的文件-->
                        <exclude>**/*.yml</exclude>
                        <exclude>**/*.sh</exclude>
                        <exclude>**/bin/</exclude>
                        <exclude>**/conf/</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>

maven-assembly-plugin 配置:

            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-assembly-plugin</artifactid>
                <configuration>
                     <!--configuration配置后,将会生成一个{finalname}-{assembly-descriptor中的id}.jar 文件在目录 output 下,其中的内容和默认的打包出来的jar类似,
                    如果只想有finalName,则增加配置:<appendAssemblyId/>-->
                    <appendassemblyid>false</appendassemblyid>
                    <!--压缩包的输出目录-->
                    <outputdirectory>${project.build.directory}/dist/</outputdirectory>
                    <descriptors>
                        <!--descriptor文件目录-->
                        <descriptor>src/main/resources/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <!--无特殊用途-->
                        <id>make-assembly</id>
                        <!--绑定到package生命周期阶段上-->
                        <phase>package</phase>
                        <goals>
                            <!--只运行一次-->
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

assembly.xml 文件参考:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <!--标识符,添加到生成文件名称的后缀符。如果指定 id 的话,目标文件则是 ${artifactId}-${id}.zip-->
    <id>demo</id>
    <formats>
            <!--指定打包类型: zip、tar、tar.gz(or tgz)、tar.bz2 (or tbz2)、tar.snappy 、tar.xz (or txz)、jar、dir、war-->
        <format>zip</format>
    </formats>

    <!--是否包含根目录,为true会将所有文件放置在压缩包的{finalName}命名的文件夹中-->
    <includebasedirectory>false</includebasedirectory>

    <!--指定打包的文件与输出目录-->
    <filesets>
        <fileset>
            <!--打包resources目录下的所有文件-->
            <directory>src/main/resources</directory>
            <!--输出至resources目录-->
            <outputdirectory>/resources</outputdirectory>
            <excludes>
                <!--排除assembly.xml 文件-->
                <exclude>assembly.xml</exclude>
            </excludes>
        </fileset>
    </filesets>

    <!--项目依赖的处理-->
    <dependencysets>
        <dependencyset>
            <!--是否打包项目本身JAR包-->
            <useprojectartifact>false</useprojectartifact>
            <!--依赖输出目录-->
            <outputdirectory>/lib</outputdirectory>
            <!--打包的依赖默认生命周期级别-->
            <scope>runtime</scope>
            <!--排除文件配置-->
            <excludes>
                <exclude>${project.groupId}:${project.artifactId}</exclude>
            </excludes>
        </dependencyset>
        <!--将项目本身JAR包放到输出目录根目录下-->
        <dependencyset>
            <outputdirectory>/</outputdirectory>
            <includes>
                <include>${project.groupId}:${project.artifactId}</include>
            </includes>
        </dependencyset>
    </dependencysets>
</assembly>

压缩包自解压配置:

            <plugin>
                <artifactid>maven-antrun-plugin</artifactid>
                <executions>
                    <execution>
                        <!-- 绑定到package生命周期阶段上 -->
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <echo message="unziping ${project.artifactId}.zip">
                                <!-- src:需要解压文件的路径,dest:文件解压之后的路径 -->
                                <unzip src="target/dist/${project.artifactId}.zip" dest="target/dist/${project.artifactId}">
                            </unzip></echo></tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Original: https://www.cnblogs.com/kimyoung/p/16554613.html
Author: KimYoung
Title: Spring boot 项目配置 Maven 资源文件分离打包

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590665/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球