在使用Spring Boot Maven插件打包项目时,有时需要将非标准路径下的资源或类文件包含到最终的JAR包中。本文将介绍几种常见的配置方法,帮助您灵活管理构建内容。
添加类文件到JAR包
如果您希望将target/test-classes目录下的类文件添加到JAR中,可以在pom.xml的<build>部分配置<resources>。以下是完整的配置示例:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.0.RELEASE</version>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<mainClass>com.test.TestApplication</mainClass>
<layout>ZIP</layout>
<!-- <classesDirectory>target/test-classes</classesDirectory> -->
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<filtering>false</filtering>
<directory>target/test-classes</directory>
<includes>
<include>**/*.class</include>
</includes>
</resource>
</resources>
</build>
通过上述配置,target/test-classes下的所有.class文件将被打包到JAR中。需要注意的是,<configuration>中的<classesDirectory>标签在文档中虽提及可用于添加资源,但实际测试中可能不生效,建议优先使用<resources>配置。

图1:开源社区标志,象征协作与共享。
添加外部JAR文件
若需将项目lib/目录下的JAR文件复制到Spring Boot JAR包的BOOT-INF/lib/中,可配置如下:
<resources>
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
此方法适用于引入本地依赖库,确保运行时类路径正确。结合Spring Boot的自动配置,能简化项目依赖管理。
排除特定依赖
在某些场景下,您可能希望从JAR包中排除某些依赖。例如,排除spring-tx模块,配置如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.0.RELEASE</version>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<mainClass>com.test.TestApplication</mainClass>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-tx</artifactId>
</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这样可以在打包时过滤不需要的库,减小JAR体积。掌握Maven插件配置是Java开发中的基础技能,有助于优化构建流程。

图2:抽象技术图标,常用于表示工具或模块。
参考文档
|