Skip to content

Latest commit

 

History

History
87 lines (70 loc) · 2.36 KB

无法识别java下的配置文件.md

File metadata and controls

87 lines (70 loc) · 2.36 KB

问题

我们在src/main/java下添加了自定义的xml文件,当使用idea或maven进行编译时,classes目录下并没有包含指定的xml配置文件。

问题原因

maven默认认为src/main/java*.java存储的目录,maven会使用maven-compiler-plugin插件编译该目录,将该目录下所有的.java文件编译为.class文件后,src/main/java文件夹就没有存在的必要了。maven在打包是会默认将src/main/java下的文件忽略。

解决方案

通过在<build>标签下使用<resources>标签手动更改maven的文件包含策略。

方案1、包含指定目录下的所有文件

<build>
	<resources>
        <!-- 指定包含 src/main/java 目录下的所有文件 -->
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.*</include>
			</includes>
		</resource>
        <!-- 指定包含 src/main/resources 目录下的所有文件 -->
        <resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*.*</include>
			</includes>
		</resource>
	</resources>
</build>

方案2、包含指定目录下的指定类型的文件

<build>
	<resources>
        <!-- 指定包含 src/main/java 目录下的所有 .xml/.properties 文件 -->
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.xml</include>
                <include>**/*.properties</include>
			</includes>
		</resource>
	</resources>
</build>

方案3、忽略指定目录下的文件(推荐)

<build>
	<resources>
        <!-- 指定包含 src/main/java 目录下的所有不是以 .java 结尾的文件 -->
		<resource>
			<directory>src/main/java</directory>
			<excludes>
				<exclude>**/*.java</exclude>
			</excludes>
		</resource>
	</resources>
</build>

包含 src/test/java 下的配置文件

不同于src/main/java,如果要包含src/test/java下的文件则应该将<resources><resource>标签替换为testResourcestestResource<includes> <excludes>用法和main目录一致。如下:

<build>
	<testResources>
		<testResource>
			<directory>src/test/java</directory>
			<excludes>
				<exclude>**/*.java</exclude>
			</excludes>
		</testResource>
	</testResources>
</build>