2013-07-18 5 views
6

Ich arbeite an einem Java-Web-Projekt, das Liquibase groovy DSL verwendet, um DB-Änderungen zu verwalten. Für dieses Thema könnte es jede andere 3rd-Party-Bibliothek sein, die *.groovy Dateien als Quellen verwendet. Das Projekt ist mit Gradle gebaut. In einem meiner Module (dao-base) unter dem Ordner src/main/resources habe ich groovy Dateien (changelog01.groovy, master_changelog.groovy etc.). Diese Dateien sollten zur Laufzeit von der liquibase jar geladen werden.IntelliJ + groovy DSL: Wie kann man Dateien vom kompilieren von groovy plugin ausschließen?

Wenn ich jetzt versuchen, das Projekt in IntelliJ, damit es gibt die folgende Fehlermeldung:

groovyc: Kann nicht Groovy-Dateien kompiliert: keine Groovy Bibliothek für Modul ‚dao-base‘ definiert ist.

Ich habe verstanden, dass das Groovy-Plugin *.groovy Dateien erkennt, versucht, sie zu kompilieren und nicht überraschend scheitert. Das sind groovy DSL-Dateien, die nur vom liquibase-Parser von Drittanbietern geladen werden sollten und ich brauche kein IntelliJs grooviges Plugin, um sie zu kompilieren.

Ich schaffte es, mit 2 Teillösungen zu kommen: 1. Deaktivieren groovy Plugin in intellij. Das Problem mit dieser Lösung ist, dass das Gradle-Plugin vom Groovy-Plugin abhängt und daher automatisch deaktiviert wird, wenn das Groovy-Plugin deaktiviert wird. Ich brauche das Gradle Plugin aktiviert. 2. ohne den Ordner src/main/resources in den Projekteinstellungen -> Module ->dao-base (mein Modul) -> Quellen Registerkarte. Das Problem mit dieser Lösung ist, dass wenn ich das Projekt erstellen und auf Tomcat bereitstellen, die Dateien aus dem Ressourcenordner fehlen und da die Dateien in der Laufzeit benötigt werden, bekomme ich Datei Ausnahme nicht gefunden, wenn der Krieg geladen wird.

Ich hatte gehofft, jemand könnte eine bessere Lösung für dieses Problem finden.

Antwort

14

Versuchen Sie, die groovy Dateisuffix aus der Liste Ressourcen des Compilers zu entfernen:

Einstellungen -> Compiler

IntelliJ IDEA Compiler Settings

+1

Danke. Das hat mein Problem gelöst. Es ist einfach, aber irgendwie hatte ich das übersehen. –

0

Sind Sie das IntelliJ-Projekt mit den Gradle Idea Plugin zu erzeugen? Wenn ja, können Sie diese groovy Dateien an den Compiler Ressourcenliste in IntelliJ über gradle hinzufügen, indem Sie diese Zugabe build.gradle:

idea { 
    project { 
    // customize the .ipr file generation. 
    ipr { 
     withXml { xmlProvider -> 
     def project = xmlProvider.asNode() 

     // Add appropriate groovy files to the compiler resources. These files will not be compiled by the groovy compiler but will be copied to the classes directory during compilation. 
     def compilerSettings = project.component.find { [email protected] == 'CompilerConfiguration' } 
     compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/changelog*.groovy']) 
     compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/master_changelog.groovy']) 
     } 

    } 
    } 
} 

Das ist schön, weil Sie nicht daran zu erinnern, muss dies manuell tun, wenn Sie erzeugen das Projekt von Gradle.

-1

Ich war mit demselben Problem konfrontiert. Ich habe das Groovy-Plugin von der Einstellung deaktiviert, nachdem ich mein Projekt erfolgreich kompiliert und ausgeführt habe.

+0

Es würde auch Gradle-Funktionen in IntelliJ deaktivieren. Schlechte Idee. – aldrael

Verwandte Themen