我似乎已经做了一些事情来告诉IntelliJ不要将源资源(例如XML和属性文件)复制到编译器输出文件夹。
资源未被复制到编译器输出路径。 测试资源会复制到测试输出文件夹,但不会复制源资源。
源文件夹: src
(这是C:\dev\myproject\src
并包含XML文件)
测试源文件夹: tests\integration\src
(这是C:\dev\myproject\tests\integration\src
并包含XML文件)
编译器输出:
C:\dev\myproject\build\classes
C:\dev\myproject\build\test
设置 - >编译器 - >资源模式:
?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl
这阻止我运行从类路径加载文件的集成测试。 (我没有完全控制这个遗留项目的结构,大多数其他开发人员都使用Eclipse。)
为了让IntelliJ将资源复制到输出文件夹,有人可以给我一些关于我需要做些什么的指示吗?
答案 0 :(得分:5)
我使用Maven在IntelliJ IDEA 13上遇到了同样的问题。
我通过将其添加到pom.xml文件中的 build 标记来解决它:
<build>
...
<resources>
<resource>
<directory>src/com</directory>
<targetPath>com</targetPath>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
...
</build>
根据您的项目更改路径。有关Maven Resources Plugin here的更多信息。
答案 1 :(得分:3)
我遇到了同样的问题。 Idea似乎在具有maven依赖项的项目中存在错误。
到目前为止我找到的解决方法:
使用任一方法成功创建工件后,Idea会继续使用它们,直到下一个maven依赖项发生更改。
答案 2 :(得分:2)
使用Gradle时,请尝试将资源添加到sourceSets
(当资源文件与源文件位于同一文件夹中时使用下面的代码,否则请调整路径)
sourceSets {
main {
java {
srcDirs 'src'
}
resources {
srcDirs 'src'
}
}
test {
java {
srcDirs 'test'
}
resources {
srcDirs 'test'
}
}
}
答案 3 :(得分:0)
对于jpa,当你添加一个jpa facet时,Intellij会创建:
META-INF/persistence.xml under src/main/java
但它不会更新构建
将此添加到pom.xml以解决问题:
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>