如何将Maven资源用作测试资源

13
我有一个Maven项目,它会加载一个XSLT文件并在结果上执行转换和其他处理。通常情况下,当用户运行应用程序时,用户会提供要加载的XSLT文件路径。但是,我在我的应用程序中包含了一些默认的XSLT文件,用户可以在不加载任何外部XSLT文件的情况下使用它们。我通过将它们添加到src/main/resources/xslt来实现这一点。我的问题是,我想在测试阶段对这些XSLT文件进行测试。我该如何实现这个目标?我应该将src/main/resources/xslt的内容复制到target/somewhere并在我的测试类代码中加载这些内容吗?哪个插件用于此操作?
2个回答

19
我的问题是,我想在测试阶段对这些xslt文件进行测试。我该如何实现?
没什么要做的,`target/classes` 在测试类路径上。更准确地说,测试类路径为:
- 首先是 `target/test-classes` - 然后是 `target/classes` - 最后是 `dependencies`
因此,`src/main/resources` 中的资源(它们被复制到 `target/classes`)可以从测试中访问。

是的,发布问题后我明确尝试了这样做,它可以工作。我只是认为src/*仅用于生成、处理和编译,之后的任何阶段都应该只查看target/*路径来完成其工作。这不是真的吗? - Paralife
@Paralife 您的资源已被复制到 target/classes(测试资源已被复制到 target/test-classes)。我已经澄清了这一点。这回答了您的问题吗? - Pascal Thivent
啊,好的。我没明白它们是复制的。我只是以为src/main/resources可以直接从测试中看到。现在我明白了。谢谢。 - Paralife
顺便问一句,在我之前的评论中假设的约定是真还是假? - Paralife
@Paralife:不知怎么的,是的,大多数事情都是在“target”的内容上完成的。 - Pascal Thivent

1

如果您将文件foo.txt放在src/test/resources/中,您可以通过以下方式打开它:

// try-with-resource (Java 1.7)
try (InputStream is = getClass().getClassLoader().getResourceAsStream("foo.txt")) {
    // do something with is...
}

您也可以查看maven-resources-plugin


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接