maven-jar-plugin 打包排除配置文件

本文介绍如何在Maven多项目/模块中通过特定配置,在打包过程中排除指定的资源文件,如配置文件,同时确保被引用项目的单元测试能正常运行。此方法适用于希望过滤掉特定配置文件的情况。

此处说的引用,是打包完成后放到maven仓储中,而不是在编译工具中直接关联,后者使用的不是打包后的jar

在maven多项目/模块中会存在项目/模块间相互引用,此时会涉及到配置文件的加载,如果想过滤被引用项目中的配置文件,且被引用项目的单元测试能够正常独立使用,可以通过如下配置在打包过程中进行过滤。

相同名称的文件名,【被引用项目】中的不会被加载。可参考spring boot 配置文件加载优先级。

<build>
		<plugins>
			<!-- 打jar包的时候排除掉所有资源文件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<!-- excludes\includes 是根据编译后的classes这个路径计算的 -->
					<excludes>
						//<exclude>/**.properties</exclude> 
						// <exclude>/**.yml</exclude> -->
						<!-- 排除掉所有资源文件 -->
						<exclude>/**.*</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
</build>
在使用 `maven-jar-plugin` 构建 Maven 项目时,默认情况下该插件不会将项目依赖的第三方库打包进最终生成的 JAR 文件中。因此,如果需要仅打包项目自身的代码而不包含依赖,实际上无需额外配置即可实现这一目标,因为这是 `maven-jar-plugin` 的默认行为[^1]。 然而,如果项目中使用了其他插件(如 `spring-boot-maven-plugin` 或 `maven-assembly-plugin`)来构建包含依赖的 JAR 包,而你希望仅通过 `maven-jar-plugin` 生成一个不包含依赖的 JAR 文件,则可以在 `pom.xml` 文件中配置 `maven-jar-plugin` 插件的 `<configuration>` 部分,确保没有启用依赖打包功能。 以下是一个标准的 `maven-jar-plugin` 配置示例,用于生成仅包含项目编译类的 JAR 包: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.5.0</version> <configuration> <!-- 指定主类 --> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> </configuration> </plugin> ``` 此配置将确保构建的 JAR 文件仅包含项目自身的类文件,而不包括任何依赖库。如果需要进一步定制 JAR 包的内容,例如排除特定的资源文件或添加额外的元数据,可以在 `<configuration>` 标签内进行相应的设置。 需要注意的是,若项目依赖于外部库,则直接运行该 JAR 文件时可能会遇到 `ClassNotFoundException` 或 `NoClassDefFoundError` 等错误,因为缺少必要的依赖项。在这种情况下,建议使用其他插件(如 `maven-shade-plugin` 或 `maven-assembly-plugin`)来创建包含所有依赖的“uber jar”[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值