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

时间:2013-09-12 09:05:24

标签: java maven testing resources classpath

我已经退出编程一段时间了,我又回到了它,我遇到了一个非常特殊的问题。在过去,每当我从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>

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

可能导致此行为的原因是什么?

2 个答案:

答案 0 :(得分:7)

您应该将资源文件放在src/test/resources而不是src/test/java,这是针对java源文件的。

答案 1 :(得分:1)

要控制(也)复制哪些文件,请查看Resource Plugin Documentation