2017-02-24 1 views
3

tl; dr: Ich kann nicht IntelliJ konfiguriert, dass die Java-Dateien im selben Verzeichnis zu erzeugen, wie gradleAnnotation Prozessor in IntelliJ und Gradle

Ich habe ein kleines Projekt, das den immutables Annotations-Prozessor verwendet. Es funktioniert wie erwartet in der Großbuchstaben-Befehlszeile, aber ich kann IntelliJ nicht dazu bringen, die generierten Dateien in dasselbe Verzeichnis auszugeben.

Das vollständige Projekt ist auf GitLab

Gradle Config:
Ich verwende die Folowing gradle Plugins:

  • gradle-idea plugin, die die Idee Konfiguration Griffe
  • gradle-apt-plugin die die apt-Konfiguration bietet und behandelt den Compile-Klassenpfad und die Ideenkonfig für die Annotationsverarbeitung (wenn auch das Ideen-Plugin angewendet wird)

relevanten Teile des Build-Skript (link to the full listing):

apply plugin: 'java' 
apply plugin: "net.ltgt.apt" 
apply plugin: 'idea' 

dependencies { 
    def immutablesVersion = '2.3.9' 
    compileOnly "org.immutables:value:$immutablesVersion:annotations" 
    compileOnly "org.immutables:encode:$immutablesVersion" 
    apt "org.immutables:value:$immutablesVersion" 
} 

wenn ich ./gradlew build alles wie erwartet gestartet: enter image description here

  1. Die Quelldatei DataEncoding.java verarbeitet eine der generierten Java-Datei DataEncodingEnabled.java endet in
  2. /build/generated/source/apt/main unter dem erwarteten Paket com.tmtron.immutables.data
  3. und das erzeugte Datei in eine .class-Datei wird auch

ich die Anmerkung Verarbeitung in IntelliJ zusammengestellt aktivieren, wie durch die gradle-apt-plugin docs vorgeschlagen: enter image description here

Dann führe ich ./gradlew clean um sicher zu gehen, dass die vorherigen Dateien verschwunden sind und ich dann auf Build - Build Project in IntelliJ klicke.
Die Anmerkung Prozessor ausgeführt wird, aber das Problem ist, dass die erzeugte Java-Datei in der falschen Stelle endet: enter image description here

Es ist in:/build/erzeugt/Quelle/apt/main/build/erzeugt/source/apt/main /com.tmtron.immutables.data
Der fettgedruckte Teil ist überflüssig.

Was mache ich falsch und wie kann ich es richtig einrichten, so dass IntelliJ und Gradle die Dateien im selben Verzeichnis erzeugen?

Hinweise:

  • Ich habe natürlich schon versucht, nur die „Produktionsquellen dir“ in der Konfiguration leer IntelliJ Anmerkung zu verlassen, aber seine nicht funktioniert: verwendet dann automatisch „erzeugt“ und ich auch am Ende mit einem falschen Weg.
  • IntelliJ Version 2016.3.4

Antwort

3

Es gibt eine einfache Abhilfe die Eltern-Verzeichnis verwendet, die in IntelliJ 2016.3.4

  • Produktionsquellen-Verzeichnis funktioniert gut: ../main
  • Test-Quellen-Verzeichnis: ../test

Jetzt Gradle und IntelliJ wird den Code zu den gleichen Verzeichnissen erzeugen.

Feste in GitLab project V0.0.2

siehe auch: apt-gradle-plugin issue#35

Verwandte Themen