16

我似乎做了一些事情来告诉 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

4 回答 4

6

我在使用 Maven 的 IntelliJ IDEA 13 上遇到了同样的问题。

我通过将其添加到pom.xml 文件中的构建标记来解决它:

<build>
...
<resources>
  <resource>
    <directory>src/com</directory>
    <targetPath>com</targetPath>
    <includes>
      <include>**/*.xml</include>
    </includes>
  </resource>
</resources>
...
</build>

根据您的项目更改路径。更多关于Maven 资源插件的信息在这里

于 2014-04-28T15:37:42.427 回答
3

我遇到了同样的问题。Idea 似乎在具有 maven 依赖项的项目中存在错误。

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

  1. 禁用外部构建。
  2. 生成一个 ant 构建脚本(Idea 会为您执行此操作)并使用该脚本进行编译。

一旦你用任何一种方式成功地创建了你的工件,Idea 就会继续使用它们,直到下一次 maven 依赖项发生变化。

于 2013-12-07T04:30:27.297 回答
2

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

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

请参阅如何使用 gradle 向 sourceSet 添加资源?

于 2017-06-20T16:27:00.500 回答
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>
于 2017-04-27T00:04:58.327 回答