2013-07-18 3 views
6

Wir bauen unsere Android-Projekte mit Maven und IntelliJ IDEA. Manchmal müssen wir "Reimport All Maven Projects" ausführen, z. um Abhängigkeiten zu aktualisieren. Das Problem dabei ist, dass es immer die Quellenordner für Ressourcen durcheinander bringt: Alle Module erhalten "gen" und "target/generated-source/r", was die Ursache für die Duplikate zu sein scheint. Nach dem Reimportieren müssen wir einen dieser Ordner manuell löschen (normalerweise den Ordner "gen"). Natürlich wollen wir diesen Schritt vermeiden. Wir haben verschiedene Einstellungen für die Android-Facette ausprobiert, bisher aber kein Glück.Doppelte Klassen R & BuildConfig nach "Reimport All Maven Projects"

Also, wie können wir IntelliJ konfigurieren, um einen richtigen Maven-Reimport zu machen, der einfach funktioniert?

+0

Vielleicht unterscheidet sich Ihre Projektstruktur von der maven-Vorgabe, die target/generated-source usw. ist. Sehen Sie sich dies an: http://maven.apache.org/guides/mini/guide-using-one-source-directory .html – morpheus05

+0

@greenrobot gibt es irgendeine Lösung mit diesem? Ich habe dieses Problem auf Maven und wirklich hier stecken geblieben :(die seltsame Sache ist, es war bis gestern Abend arbeiten, plötzlich begann es zu sagen, doppelte Klasse R und BuildConfig. –

Antwort

2

Nach der Antwort von Sven Strohschein bei http://youtrack.jetbrains.com/issue/IDEA-94901 können Sie versuchen, zu:

  1. Die Ordner "gen", "target" und "out" löschen
  2. Die Änderungen in den Dateien "ipr" und "iml" rückgängig machen (oder einfach alle löschen, vielleicht sogar Ordner .idea)
  3. starten IntelliJ 12
  4. Öffnen Sie die pom-Datei
  5. Rechtsklick -> "Maven" -> "Reimport"
  6. "Build" -> "Projekt neu erzeugen"

Works fo mich.

0

Aus Ihrer Beschreibung oben nehme ich an, dass Ihre Projektstruktur von der Maven-Vorgabe abweicht. Siehe Introduction to the POM. Aber ich denke, das Android android:generate-sources interessanter ist, wenn Sie die Assets Verzeichnis geändert haben usw.

Beispiel:

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

Ja, es unterscheidet sich von der Standard-Maven-Layout.Das Verzeichnis ist das Old-School-Android-Layout mit src- und gen-Ordnern direkt im Projektstammverzeichnis. Haben Sie konkrete Vorschläge? –

+0

Ich habe meinen Beitrag geändert. Ich habe kein Android-Projekt, deshalb kann ich die Konfiguration von Android: generate-sources nicht testen. Ich denke, dass Sie einige Details davon ändern müssen. – morpheus05

+0

Nicht sicher über diesen Ansatz: Wir haben bereits src, und der Standard für den Ordner res ist bereits $ {project.basedir}/res. –

1

Nach IDEA erkennt und fügt Android Facette zu Modul, würde es gen Ordner an der üblichen Stelle zu generieren, aber maven-android-plugin erzeugt seine eigenen unter target Verzeichnis.

Sie müssen IDEA angeben, um generierte Dateien an derselben Stelle zu platzieren, an der maven-android-plugin sie erstellt.

Zuerst android Facette Einstellungen die Nutzung Modul und überprüfen Sie die Option Maven Ziel von selbst statt Erzeugungs zu verwenden:

enter image description here

Dann, um Moduls Einstellungen gehen und setzen Ausgabepfad gleich wie Maven, das ist target Verzeichnis:

enter image description here

gen Verzeichnisse löschen, Do mvn clean alle unnece löschen Sicherheitsdateien.