Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
默认情况下,Maven不会将src/test/java中的*.xml文件复制到目标/测试类_Java_Maven_Testing_Resources_Classpath - Fatal编程技术网

默认情况下,Maven不会将src/test/java中的*.xml文件复制到目标/测试类

默认情况下,Maven不会将src/test/java中的*.xml文件复制到目标/测试类,java,maven,testing,resources,classpath,Java,Maven,Testing,Resources,Classpath,我已经退出编程有一段时间了,我正在重新开始编程,我遇到了一个非常奇怪的问题。过去,每当我从Maven中编译测试代码时,它都会将测试源代码树中包含的所有*.xml资源文件复制到target/test类中。但昨晚,在我目前的项目中,它不再这样做了——这不是我所期望的。每当我通过Maven或Intellij IDEA运行测试时,测试都会失败,因为它在类路径中找不到任何*.xml文件——它们从未被复制过 我的计算机上有一些旧项目,它们使用完全相同的.pom文件和项目结构,*.xml文件复制得很好 为了解

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

我的计算机上有一些旧项目,它们使用完全相同的.pom文件和项目结构,*.xml文件复制得很好

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


src/test/java
假的
**/*.xml
虽然这解决了问题,但我仍然很好奇,为什么我不得不不厌其烦地告诉Maven手动将*.xml文件从测试源代码树复制到目标/测试类目录。正如我所说,过去两年中,每一个老项目都在复制*.xml文件,而我没有指定
testResources


造成这种行为的原因是什么?

您应该将资源文件放在
src/test/resources
中,而不是
src/test/java
,它是用于java源文件的。

要控制哪些文件(也)被复制,请看一下

我认为在这种情况下,当涉及到dbunit测试数据时,为了方便起见,我真的希望它们与java类配对。我接受你的解释,但我仍然很困惑,为什么它会将它们复制到一些项目中,而不是我当前的项目中:(这种不一致性困扰着我:)我仍然想理解为什么它适用于各种各样的项目,但这次不行。Maven中是否存在导致默认包含.xml文件(但仅在某些情况下)的默认值?可能是因为我第一次偶然发现文件不再被复制了吗?我想我的问题更多的是理解为什么它停止工作,因为我已经有了解决这个问题的方法。我不会将它们放在
src/test/resources
中,因为镜像包结构对项目不利,所以我必须将这些xml文件保存在
src/test/java
中,我不同意Qwerky的评论:将资源与类放在一起是一种有效的模式。这似乎是Intellij中的一个bug。出于某种原因,在测试类旁边有spring上下文xml文件已经停止工作。将它们移动到src/test/resources,一切又开始了。这是与maven合作的“最佳实践”方式,在一天结束时移动他们并不是什么大问题。确保这两种方法都是有效的——只需决定是希望它“正常工作”,还是希望根据OP向pom中添加一个变通方法。我在maven 3和Eclipse中仍然存在同样的问题。真的是婴儿潮一代。你的老项目可能有什么不同吗?可能是不同的父pom,或者是不同版本的插件?在任何情况下,您的使用都是非标准的,xml文件应该放在
src/test/resources
中,正如Qwerky正确地说的那样。从维护的角度来看,我会考虑移动它们并修复它在短期内提出的任何问题。不幸的是,没有。POMS和插件版本完全相同。事实上,这个新项目是早期项目的一个直接分支,因此它为什么突然停止工作就更没有意义了:/至于“标准”,我并不关心它。这个项目有一个极其复杂的域模型,不可能在src/test/resources中整齐地创建跨所有测试类共享的测试数据。实际上有成千上万个不同的xml文件,它们必须是这样的。在资源中反映它将是一个巨大的维护痛苦。在这种情况下,它是right@egarvi+1您的XML简介为我的类似情况提供了一个解决方法。