Подтвердить что ты не робот

Ресурсы, не скопированные на выходной путь в IntelliJ 12.1.4

Кажется, я сделал что-то, чтобы сообщить 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 скопировал ресурс в выходные папки?

4b9b3361

Ответ 1

У меня были те же проблемы с IntelliJ IDEA 13 с использованием Maven.

Я решил это, добавив это в мой тег build в файле pom.xml:

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

измените путь в соответствии с вашим проектом. Подробнее о Плагин Maven Resources здесь.

Ответ 2

Я столкнулся с той же проблемой. Идея, похоже, имеет ошибку в проектах с зависимостями maven.

Обходные пути, которые я мог найти до сих пор:

  • Отключите внешнюю сборку.
  • Сгенерируйте ant build script (Идея сделает это для вас) и скомпилируйте с помощью этого script.

Как только вы успешно создали свои артефакты в любом случае, Idea продолжает использовать их до тех пор, пока не изменится зависимость следующего maven.

Ответ 3

При использовании Gradle попробуйте добавить ресурсы в sourceSets (используйте приведенный ниже код, когда у вас есть файлы ресурсов в той же папке, что и исходные файлы, в противном случае адаптируйте путь)

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

Обратитесь к Как добавить ресурсы в sourceSet с помощью 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>