【问题标题】:Resources not copied to output path in IntelliJ 12.1.4资源未复制到 IntelliJ 12.1.4 中的输出路径
【发布时间】:2013-06-07 00:57:18
【问题描述】:

我似乎做了一些事情来告诉 IntelliJ 不要将源资源(例如 XML 和属性文件)复制到编译器输出文件夹。

资源没有被复制到编译器输出路径。 Test 资源被复制到测试输出文件夹,但没有source 资源被复制。

源文件夹: 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 将资源复制到输出文件夹?

【问题讨论】:

  • 如果不是Maven项目,应该可以正常工作,否则是needs to be reported用样例项目复现的bug。作为一种解决方法,您可以尝试disable external build,但不建议这样做。
  • 我已经选择了Use external build。我已取消勾选它,它现在正在工作!但是还有一些其他开发人员确实使用了 IntelliJ,他们已经勾选了它,并且资源按预期复制。
  • 如果您有测试用例,请报告错误。
  • 我遇到了同样的问题:测试资源没有复制到输出文件夹。
  • 在尝试为 CrazyCoder 创建测试用例时,我重新启动了 IntelliJ,这似乎解决了我的问题!所以我没有重现我的问题。抱歉,我只能建议重新启动 IntelliJ,因为这就是为我解决的问题。

标签: intellij-idea


【解决方案1】:

我在使用 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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 对于那些使用 IntelliJ IDEA 13 的用户,外部构建是唯一可用的选项,因为旧的编译器已被删除。因此,您将找不到任何“使用外部构建”复选框并将其禁用。
    【解决方案3】:

    使用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?

    【讨论】:

      【解决方案4】:

      对于 jpa,当您添加 jpa 方面时,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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-20
        • 2016-08-02
        • 2016-04-29
        • 1970-01-01
        • 2019-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多