Konfigurieren von IntelliJ für die Verwendung von Groovy Compiler anstelle von Java Compiler

8

In meinem Maven-Projekt mische ich gerade meinen Java-Code mit etwas Groovy-Code. Ich benutze Groovy hauptsächlich, um die Bohnen an dieser Stelle zu konstruieren. Ein Teil meines Java-Codes verwendet die Groovy-Beans direkt.

Ich habe das Maven Compiler Plugin wie folgt konfiguriert: -

%Vor%

Wenn ich meine Testfälle mit mvn test ausfühle, funktioniert es gut.

Wenn ich jedoch die Testfälle direkt von IntelliJ aus starte, indem ich mit der rechten Maustaste auf die Testdatei klicke und sie ausführe, erhalte ich auf den Groovy-Beans die Fehlermeldung "Kann kein Symbol finden". Wenn ich das Fehlerprotokoll lese, benutzt IntelliJ den Java-Compiler, um mein Projekt zu kompilieren, bevor ich den Test ausführe ... daher schlagen die Tests fehl.

Ich kann anscheinend nicht herausfinden, wie man IntelliJ anweist, immer den Groovy-Compiler anstelle des Java-Compilers zu verwenden.

Was soll ich unter SDK ändern, damit der Groovy-Compiler verwendet wird? Ich habe versucht, Groovy verwandte JAR-Dateien hinzuzufügen, aber ich habe andere Fehler.

UPDATE 1: Per @Seagull-Vorschlag

Ich habe groovy JARs unter "Global Libraries" hinzugefügt: -

Wenn ich die Testdatei direkt von IntelliJ aus ausgeführt habe, erhalte ich einige Groovy-Warnungen und bekomme immer noch denselben Fehler: -

Danke.

    
limc 10.12.2013, 00:57
quelle

2 Antworten

3

Dies ist die Antwort des IntelliJ-Supportteams vom 2. Januar 2014 zu diesem Problem: -

  

IDEA verwendet groovyc, um Java-Stubs für Groovy-Klassen zu generieren   für nahtlose Interop. Leider funktioniert der Stub-Generierungscode nicht   Starten Sie AST-Transformationen (z. B. unveränderbar) und so die Methoden   generiert von diesen Transformationen nicht in Java-Stubs,   daher sieht der Java-Compiler sie nicht.

     

Leider sehe ich keine Problemumgehungen, die Sie nicht ändern müssen   Projekt. Eine wäre, Groovy-Dateien in ein separates Modul zu platzieren.   Ein anderes wäre, die Anrufplätze in Groovy zu ändern. Der dritte   wäre @Immutable durch @Canonical zu ersetzen und das zu generieren   Konstruktor, so dass es tatsächlich im Code ist (und die Stubs werden   enthält es).

     

Sie können auch Ссылка wählen / sehen   um Eclipse Groovy Compiler zu unterstützen.

Am Ende habe ich sowohl @Immutable als auch @Canonical entfernt und aus zwei Gründen eigene Konstruktoren erstellt: -

  • Es erlaubt mir, meinen Testfall direkt von IntelliJ aus zu starten.
  • Es räumt den JaCoCo-Code-Coverage-Bericht auf, der durch die nicht verwendeten Konstruktoren, die von @Immutable und @Canonical kostenlos zur Verfügung gestellt werden, erheblich ist.
limc 09.01.2014, 17:29
quelle
5

Ich hatte dieses Problem bei der neuesten Version von Intellij ideaIC-15.0.3-custom-jdk-bundled.dmg auf MAC 10.10.5 , JDK 1.8.0_60 .

Einschließlich aller Schritte für die Nachwelt ...

  1. Vom Terminal aus habe ich die neueste Version von groovy mit sdkman installiert: sdk install groovy 2.4.5
  2. Klicken Sie in Intellij mit der rechten Maustaste auf das oberste Projekt & gt; Wählen Sie "Add Framework Support ..." & gt; Fügen Sie groovy 2.4.5 hinzu (wenn es nicht bereits hinzugefügt wurde).
  3. In Intellij, "Einstellungen" & gt; "Build, Ausführung, Bereitstellung" & gt; "Compiler" & gt; "Ressourcenmuster:" & gt; Ändern Sie die Reihenfolge von !?*.java;!?*.groovy in !?*.groovy;!?*.java
  4. Kompiliere das Projekt neu ( Befehl + Shift + F9 ), es sollte nun erfolgreich kompiliert werden.
Nick Grealy 07.02.2016 00:48
quelle

Tags und Links