Дублировать классы R & BuildConfig после «Reimport All Maven Projects»

Мы разрабатываем проекты для Android с Maven и IntelliJ IDEA. Иногда мы должны выполнять «Reimport All Maven Projects», например, для обновления зависимостей. Проблема заключается в том, что он всегда испортил исходные папки для ресурсов: все модули получают «gen» и «target / generated-source / r», которые, по-видимому, являются причиной дубликатов. Поэтому, после реимпорта, нам нужно вручную удалить одну из них (обычно это папка «gen»). Конечно, мы хотим избежать этого шага. Мы попробовали несколько настроек для фасет Android, но пока не повезло.

Итак, как мы можем настроить IntelliJ для создания правильного реимпорта Maven, который работает?

Согласно ответу Свена Строхшеина по адресу http://youtrack.jetbrains.com/issue/IDEA-94901, вы можете попробовать:

  1. Удалите папки «gen», «target» и «out»
  2. Отмените изменения в файлах «ipr» и «iml» (или просто удалите их все, возможно, даже папку .idea)
  3. Запуск IntelliJ 12
  4. Открыть файл pom
  5. Щелкните правой кнопкой мыши -> «Maven» -> «Reimport»
  6. «Build» -> «Проект перестроения»

Работает для меня.

После того, как IDEA обнаружит и добавит фасет аэродрома к модулю, он начнет генерировать папку gen в обычном месте, но maven-android-plugin генерирует свой собственный в target каталоге.

Вы должны сказать, что IDEA помещает сгенерированные файлы в том же месте, где их создает maven-android-plugin .

Во-первых, используйте параметры факела android модуля и проверьте возможность использовать цель Maven вместо генерации самостоятельно:

Введите описание изображения здесь

Затем перейдите к настройкам модуля и задайте путь вывода таким же, как Maven, который является target каталогом:

Введите описание изображения здесь

Удалить каталоги gen , Do mvn clean чтобы очистить все ненужные файлы.

Из вашего описания выше я предполагаю, что ваша структура проекта отличается от maven по умолчанию. См. Введение в POM . Но я думаю, что Android- андроид: генерировать-источники интереснее, если вы изменили каталог активов и т. Д.

Пример:

 <sourceDirectory>${basedir}/src</sourceDirectory> <outputDirectory>${basedir}/target/classes</outputDirectory>