我正在尝试将现有项目从 Ant 项目迁移到 Maven 项目。 Ant 项目的结构如下:
|-root
|---resources
|------foo
|------yaz
|---src
|------SomeFile.java
Maven 项目的结构为
|-root
|---src
|------main
|---------java
|------------SomeFile.java
|------test
|---------resources
|------------foo
|------------yaz
不幸的是,代码中有很多对“资源”文件夹的显式引用。一些例子:
@ContextConfiguration("classpath:/resources/foo/bar.xml")
ApplicationContext context =
new FileSystemXmlApplicationContext("resources/foo/baz.xml");
File file = new File("resources/yaz/blah.gif");
etc...
更改所有引用会花费很多精力(并且由于其他业务规则,代码必须保留在“资源”文件夹中)。我想知道 Maven 中是否有一种简单的方法来解决文件夹结构的变化。这样,当 JUnit 测试运行或应用程序通过 IDE (Netbeans) 启动时,它将正确解析资源。
换句话说,代码在 Ant 中运行良好,但在移动到 Maven 后就崩溃了,因为资源已移动到不同的文件夹结构。
最佳答案
您的代码应该始终引用构建区域中的文件,而不是源代码区域中的文件。看来您的 maven 构建并没有完全复制 ant 构建正在做的事情。检查 target/classses 文件夹(稍后构建 jar 文件的基础)并查看资源文件的位置。如果错误,要么操纵源目录结构直到得到你想要的,要么使用 pom 元素设置正确的 - http://maven.apache.org/pom.html#Resources
关于java - maven能否解析文件夹结构发生变化的本地资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903571/