Spring Boot 打包分离依赖 JAR 和配置文件

环境:STS
框架:SpringBoot

一、Jar包启动

分离 JAR 包和配置文件,使用 Maven 插件:

<plugins>
    <!-- 打JAR包 -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <!-- 不打包资源文件(配置文件和依赖包分开) -->
            <excludes>
                <exclude>*.**</exclude>
                <exclude>*/*.xml</exclude>
            </excludes>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
                    <classpathPrefix>lib/</classpathPrefix>
                    <!-- jar包不包含唯一版本标识 -->
                    <useUniqueVersions>false</useUniqueVersions>
                    <!--指定入口类 -->
                    <mainClass>site.yuyanjia.template.Application</mainClass>
                </manifest>
                <manifestEntries>
                    <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
                    <Class-Path>./resources/</Class-Path>
                </manifestEntries>
            </archive>
            <outputDirectory>${project.build.directory}</outputDirectory>
        </configuration>
    </plugin>

    <!-- 该插件的作用是用于复制依赖的jar包到指定的文件夹里 -->
    <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>${project.build.directory}/lib/</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>

    <!-- 该插件的作用是用于复制指定的文件 -->
    <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>
                            <includes>
                                <!-- <include>*.properties</include> -->
                            </includes>
                        </resource>
                    </resources>
                    <outputDirectory>${project.build.directory}/resources</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>

    <!-- SpringBoot 打包插件,把 maven-jar-plugin 打成的jar包重新打成可运行jar包 -->
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖 -->
            <includes>
                <include>
                    <groupId>null</groupId>
                    <artifactId>null</artifactId>
                </include>
            </includes>
            <layout>ZIP</layout>
            <!--使用外部配置文件,jar包里没有资源文件 -->
            <addResources>true</addResources>
            <outputDirectory>${project.build.directory}/resources</outputDirectory>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
                <configuration>
                    <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                    <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                    <!--<classifier>run</classifier> -->
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

Maven打包指令:mvn package

参考地址:https://www.jianshu.com/p/dbdece9062b3

猜你喜欢

转载自blog.csdn.net/qq_35959573/article/details/81001099