2011-11-01 10 views
7

Sto usando Grails 1.3.7 e non riesco a capire come ottenere la versione 4.0 di httpclient al di fuori del mio classpath (a favore di 4.1). Ho bisogno di farlo a causa di un costrutto no-args usato in 4.1 su cui si basa il plugin.come ottenere la versione 4.0 di httpclient al di fuori del mio classpath in grails

Esecuzione di un rapporto di dipendenza di Grails, sembra che 4.1 debba essere quello utilizzato in fase di esecuzione. Ed è, se impacchetta le cose in un file .war. TUTTAVIA la versione 4.0 è ancora terminata sul classpath quando si utilizza run-app per qualche motivo. Si noti che è (correttamente) usato in fase di compilazione per alcuni interni di graal, e in qualche modo finisce ancora sul mio classpath.

-> Posso capire dove esattamente questo 4.0 .jar proviene e finire il mio percorso di classe e impedire che accada

(dove sono tutti i .jars messi durante l'esecuzione tramite run-app?) -> Posso dire a Grails di compilare con 4.1 invece di 4.0 per i suoi interni (in questo caso il http-builder di org.codehaus.groovy.modules.http-builder module?) Non è la soluzione migliore, ma la prenderò , come confezionare tutto in un .war ogni volta che voglio testarlo non è piacevole.

L'aiuto sarebbe molto apprezzato.

risposta

7

Ho appena passato attraverso la stessa cosa, aggiungere le seguenti al vostro BuildConfig.groovy

dependencies {   
     build 'org.apache.httpcomponents:httpcore:4.1.2' 
     build 'org.apache.httpcomponents:httpclient:4.1.2' 
     runtime 'org.apache.httpcomponents:httpcore:4.1.2' 
     runtime 'org.apache.httpcomponents:httpclient:4.1.2' 
} 

applausi

Lee

+0

In realtà ho risolto questo problema modificando il plug-in che ha specificato 'build': release: 1.0.0.RC3 'aggiungendo' exported = false ', ma ho accettato la soluzione in quanto potrebbe essere un po' più pulita per tenerlo dentro il proprio codice e non è necessario modificare il file delle dipendenze del plugin. In conclusione, è lo specificatore 'build'. questo è il colpevole. Grazie – Peter

1

È possibile ottenere httpclient 4.0 al largo del percorso di classe con l'aggiunta di un esclude riga in BuildConfig.groovy. Scopri quale plugin lo sta dichiarando come dipendenza usando il comando grails dependency-report.

Una volta individuato quale incluso, è possibile escluderlo nella sezione plug-in di BuildConfig.groovy. Esempio:

plugins { 
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1 
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1 
     excludes 'httpclient' 
    } 
} 

Il plugin che si basa sul costruttore no-arg in HttpClient 4.1 dovrebbe dichiararla come una dipendenza. In caso contrario, dovresti aprire un problema con l'autore del plugin. Per ovviare al problema, è possibile elencare httpclient 4.1 nella sezione delle dipendenze come descritto in precedenza.

Problemi correlati