2013-12-10 10 views
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.Konfigurieren von IntelliJ für die Verwendung von Groovy Compiler anstelle von Java Compiler

konfiguriert ich das Maven Plugin Compiler wie folgt aus: -

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <compilerId>groovy-eclipse-compiler</compilerId> 
     <source>${jdk.version}</source> 
     <target>${jdk.version}</target> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-compiler</artifactId> 
      <version>2.8.0-01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-batch</artifactId> 
      <version>2.1.5-03</version> 
     </dependency> 
    </dependencies> 
</plugin> 

Wenn ich meine Testfälle mit mvn test laufen, es funktioniert gut.

Wenn ich jedoch die Testfälle direkt von IntelliJ aus führe, 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, verwendet IntelliJ den Java-Compiler, um mein Projekt zu kompilieren, bevor der Test ausgeführt wird ... die Tests schlagen daher fehl.

Ich kann nicht herausfinden, wie IntelliJ angewiesen wird, immer den Groovy-Compiler anstelle des Java-Compilers zu verwenden.

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

enter image description here

UPDATE 1: Per @Seagull Vorschlag

ich groovy JARs unter "Globale Bibliotheken" hinzugefügt: -

enter image description here

Als ich aus der Testdatei direkt ausgeführt IntelliJ, ich bekomme einige Groovy-Warnungen und bekomme immer noch den gleichen Fehler: -

enter image description here

Danke.

+1

Haben Sie eine Groovy Framework-Unterstützung für Ihr Projekt? Versuchen Sie, es hinzuzufügen, indem Sie mit der rechten Maustaste auf den Projektstammordner in der Projektansicht klicken und ein vorhandenes auswählen oder ein neues Groovy-SDK erstellen. Außerdem wird die Groovy-Bibliothek in die Modulabhängigkeit eingefügt. – Seagull

+0

Es gibt keine Option für mich, dies zu tun. Ich ging zu "Project SDK" unter "Project" Einstellungen, wenn ich neue "JDK" hinzufügen und auf meine heruntergeladene Groovy SDK zeigen, erkennt es nichts. – limc

+0

Groovy hat kein separates SDK, um dort aufgeführt zu werden. Versuchen Sie, eine gewöhnliche "Globale Bibliothek" zu erstellen, das Symbol wechselt zum Groovy-Symbol. Fügen Sie es zu Ihrem Modul hinzu, und es funktioniert möglicherweise. – Seagull

Antwort

3

Dies ist die Antwort des IntelliJ-Support-Team am 2. Januar 2014 in Bezug auf dieses Problem: -

IDEA uses groovyc to generate Java stubs for Groovy classes to allow for seamless interop. Unfortunately stub generation code doesn't launch AST transformations (e.g. Immutable) and so the methods generated by those transformations don't make it into Java stubs, hence Java compiler doesn't see them.

Unfortunately I see no workarounds that don't require modifying your project. One would be to place Groovy files into a separate module. Another would be to change the call places into Groovy. The third one would be to replace @Immutable with @Canonical and generate the constructor so that it's actually in the code (and the stubs will contain it).

You may also vote/watch http://youtrack.jetbrains.com/issue/IDEA-52379 to support Eclipse Groovy compiler.

ich beide @Immutable Entfernen endete und @Canonical und meine eigenen Konstrukteure schaffen, aus 2 Gründen: -

  • Es ermöglicht mir, meinen Testfall direkt von IntelliJ zu starten.
  • Es bereinigt JaCoCo Code Coverage Bericht deutlich durch die unbenutzten Konstruktoren @Immutable und @Canonical kostenlos zur Verfügung gestellt verursacht.
5

hatte ich dieses Problem auf die neueste 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 installierte ich die neueste Version von groovy, mit sdkman: sdk install groovy 2.4.5
  2. In Intellij, oben Projekt der rechten Maustaste> wählen Sie "Framework-Unterstützung Hinzufügen ..."> Fügen Sie groovy 2.4.5 (wenn es wurde noch nicht hinzugefügt).
  3. In Intellij, "Einstellungen"> "Build, Ausführung, Deployment"> "Compiler"> "Ressourcen Muster:"> den Auftrag von !?*.java;!?*.groovy ändern !?*.groovy;!?*.java
  4. Recompile das Projekt (Befehl + Umschalttaste + F9), sollte es jetzt erfolgreich kompilieren.
Verwandte Themen