默认情况下,Maven不会将src/test/java中的*.xml文件复制到target/test-classes

ege*_*ari 5 java testing resources classpath maven

我已经退出编程一段时间了,我又回到了它,我遇到了一个非常特殊的问题.在过去,每当我从Maven中编译测试代码时,它都会将测试源树中包含的所有*.xml资源文件复制到target/test-classes.但昨晚,在我目前的项目中,它不再这样做 - 这不是我的预期.每当我通过Maven或Intellij IDEA运行测试时,测试都会失败,因为它在类路径中找不到任何*.xml文件 - 它们从未被复制过.

我在我的计算机上使用完全相同的.pom文件和项目结构的旧项目,并且*.xml文件复制得很好.

为了解决这个问题,我将以下XML包含在我的Maven POM中:

    <testResources>
        <testResource>
            <directory>src/test/java</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </testResource>
    </testResources>
Run Code Online (Sandbox Code Playgroud)

虽然这解决了这个问题,但我仍然很好奇为什么我不得不告诉Maven手动将我的测试源树中的*.xml文件复制到我的target/test-classes目录.就像我说的那样,过去两年中的其他旧项目都是在没有我指定的情况下复制*.xml文件testResources.

什么可能导致这种行为?

Qwe*_*rky 7

你应该把资源文件中src/test/resources没有src/test/java,这是Java源文件.