关于Maven打包(Jar)时文件过滤的正确做法

在对项目进行maven打包时,某些特殊文件的过滤一直存在问题,终于有时间搞清楚了。

一般在项目中,分为以下两个部分:

  • 代码文件:src/main/java

默认打包规则是仅包含 *.class 字节码文件,忽略其他格式。

  • 资源文件:src/main/resources

默认打包规则是包含全部文件。

之前的做法

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>3.1.0</version>
	<excludes>
		<exclude>**/*.properties</exclude>
		<exclude>**/*.psd</exclude>
	</excludes>
</plugin>

可以看到是利用maven-jar-plugin插件来进行文件过滤的
实际上也确实达到了预期效果

但如果代码文件中也想包含除了class以外的其他文件,尝试添加 时,却意外的发现连 class 文件都被忽略了,多次尝试也未成功。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>3.1.0</version>
	<excludes>
		<exclude>**/*.properties</exclude>
		<exclude>**/*.psd</exclude>
	</excludes>
	<includes>
		<include>**/*.jw</include>
		<include>**/*.json</include>
	</includes>
</plugin>

正确的做法

利用 resources 标签:

<resources>
	<resource>
		<directory>src/main/java</directory>
		<includes>
			<include>**/*.jw</include>
			<include>**/*.json</include>
		</includes>
	</resource>
	<resource>
		<directory>src/main/resources</directory>
		<excludes>
			<exclude>**/*.properties</exclude>
			<exclude>**/*.psd</exclude>
		</excludes>
	</resource>
</resources>

打包结果完全符合预期!

posted @ 2020-07-04 18:39  网无忌  阅读(1550)  评论(0编辑  收藏  举报