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.
Danke. Das hat mein Problem gelöst. Es ist einfach, aber irgendwie hatte ich das übersehen. –