方案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.xml
的 build
部分直接配置资源排除:
<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 文件中。