资源未复制到IntelliJ 12.1.4中的输出路径

时间:2013-06-11 08:31:36

标签: intellij-idea

我似乎已经做了一些事情来告诉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将资源复制到输出文件夹,有人可以给我一些关于我需要做些什么的指示吗?

4 个答案:

答案 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依赖项的项目中存在错误。

到目前为止我找到的解决方法:

  1. 禁用外部版本。
  2. 生成一个ant构建脚本(Idea为您完成此操作)并使用该脚本进行编译。
  3. 使用任一方法成功创建工件后,Idea会继续使用它们,直到下一个maven依赖项发生更改。

答案 2 :(得分:2)

使用Gradle时,请尝试将资源添加到sourceSets(当资源文件与源文件位于同一文件夹中时使用下面的代码,否则请调整路径)

sourceSets {
    main {
        java {
            srcDirs 'src'
        }
        resources {
            srcDirs 'src'
        }
    }
    test {
        java {
            srcDirs 'test'
        }
        resources {
            srcDirs 'test'
        }
    }
}

请参阅How do I add resources to sourceSet with gradle?

答案 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>