[SpringBoot]打包jar程序时pom.xml中配置排除指定文件的解决方案

方案1:如果您想排除特定的依赖项

如果您是想排除某些依赖项,应该这样配置:

<configuration>
    <fork>true</fork>
    <excludes>
        <exclude>
            <groupId>some.group</groupId>
            <artifactId>some-artifact</artifactId>
        </exclude>
    </excludes>
</configuration>

方案2:如果您想排除特定的资源文件(推荐)

如果您是想排除 src/main/resources 目录下的特定文件,应该使用 Maven Resources Plugin 来过滤资源:

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <configuration>
                <fork>true</fork>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        
        <!-- 添加资源过滤配置 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <excludes>
                    <exclude>pay/apiclient_key.pem</exclude>
                    <exclude>pay/apiclient_cert.pem</exclude>
                </excludes>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>${project.artifactId}</warName>
                <!-- 也可以在 war plugin 中排除文件 -->
                <packagingExcludes>WEB-INF/classes/pay/apiclient_key.pem,WEB-INF/classes/pay/apiclient_cert.pem</packagingExcludes>
            </configuration>
        </plugin>
    </plugins>
</build>

方案3:使用 Maven 的默认资源排除

或者在 pom.xmlbuild 部分直接配置资源排除:

<build>
    <finalName>${project.artifactId}</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>pay/apiclient_key.pem</exclude>
                <exclude>pay/apiclient_cert.pem</exclude>
            </excludes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <configuration>
                <fork>true</fork>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>${project.artifactId}</warName>
            </configuration>
        </plugin>
    </plugins>
</build>

推荐使用方案3

方案3 是最简单和直接的方法,它会在资源处理阶段就直接排除这些文件,确保它们不会被打包到最终的 jar 或 war 文件中。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容