2013-07-18 19 views
6

Sto lavorando a un progetto Web Java che utilizza Liquibase Groovy DSL per gestire modifiche DB. Per motivi di questo argomento, potrebbe trattarsi di qualsiasi altra libreria di terze parti che utilizza i file *.groovy come origini. Il progetto è costruito con gradle. In uno dei miei moduli (dao-base) nella cartella src/main/resources ho file groovy (changelog01.groovy, master_changelog.groovy ecc.). questi file dovrebbero essere caricati dal jar liquibase in fase di esecuzione.IntelliJ + groovy DSL: Come escludere i file dalla compilazione del plugin Groovy?

Ora in cui provo a fare il progetto in IntelliJ dà il seguente messaggio di errore:

groovyc: Non è possibile compilare i file Groovy: nessuna libreria Groovy è definito per modulo 'dao-base'.

ho capito che il plugin Groovy rileva *.groovy file, prova a compilarli e non sorprende fallisce. si tratta di file DSL groovy che dovrebbero essere caricati solo dal parser di liquibase di terze parti e non ho bisogno del plug-in Groovy di IntelliJ per tentare di compilarli.

Sono riuscito a trovare 2 soluzioni parziali: 1. disabilitazione del plugin Groovy in intellij. Il problema con questa soluzione è che il plugin gradle dipende dal plugin groovy e quindi viene disabilitato automaticamente disabilitando il plugin groovy. Ho bisogno del plugin gradle abilitato. 2. esclusa la cartella src/main/resources nelle impostazioni del progetto -> moduli ->dao-base (il mio modulo) -> scheda sorgenti. Il problema con questa soluzione è che quando costruisco il progetto e lo distribuisco in tomcat, i file dalla cartella delle risorse sono mancanti e poiché i file in esso sono richiesti in runtime, ottengo l'eccezione di file non trovata quando si carica la guerra.

Speravo che qualcuno potesse trovare una soluzione migliore per questo problema.

risposta

14

prova a rimuovere il suffisso del file Groovy dalla lista risorse del compilatore:

Impostazioni -> compilatore

IntelliJ IDEA Compiler Settings

+1

Grazie. Questo ha risolto il mio problema. È semplice ma in qualche modo l'ho ignorato. –

0

Si sta generando il progetto IntelliJ con l'Gradle Idea Plugin? Se è così, è possibile aggiungere i file groove alla lista delle risorse del compilatore in IntelliJ via Gradle aggiungendo questo a 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']) 
     } 

    } 
    } 
} 

Questo è bello perché non dovrete ricordarvi di farlo manualmente quando si genera il progetto da gradle.

-1

Mi trovavo di fronte allo stesso problema. Ho disabilitato il plug-in Groovy dall'impostazione dopo che è stato compilato correttamente e ho eseguito il mio progetto.

+0

Disattiva anche le funzionalità di Gradle in IntelliJ. Cattiva idea. – aldrael

Problemi correlati