2015-12-17 11 views
5

Sto tentando di dichiarare lo dependencies nel mio progetto gradle usando la tecnica descritta in this answer.Gradle: nessuna proprietà di questo tipo per l'errore di classe generato nel sottomodulo?

Tuttavia quando lo faccio ottengo questo errore:

No such property: libraries for class 

Come posso risolvere questo problema?

Dipendenze dichiarati come proprietà a livello superiore build.gradle come segue:

ext.libraries = [ 


junit: 'junit:junit:4.10' 

] 

Cercando di recuperare la dipendenza a livello di modulo build.gradle (dove viene gettata errore):

testCompile([ 
       libraries.junit 
]) 

errore gettato:

No such property: libraries for class: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 
+0

per favore potete provare: 'project.libraries.junit'? – Opal

+0

Qual è la differenza con l'utilizzo di questo? Ho provato ma sto ottenendo lo stesso errore? – java123999

+0

Dovrebbe essere lo stesso, tuttavia a volte può avere un significato. Hai una demo online che riproduce il problema? – Opal

risposta

3
  1. nel vostro livello superiore settings.gradle, inserisci la tua sottoprogetto:

    include 'subproject' 
    
  2. nel vostro livello superiore build.gradle definire le proprietà ext:

    ext.libraries = [junit: 'junit:junit:4.10'] 
    

che non ha bisogno di sii una mappa, se stai usando solo un valore, ma mi sto attenendo alla tua formattazione.

  1. Per utilizzare questo nel vostro subproject build.gradle:

    dependencies{ 
        testCompile libraries.junit 
    } 
    
+0

Ok, quindi non ho bisogno di avere "progetto" da nessuna parte? – java123999

+0

'project.ext.varname' è la risoluzione corretta completa per le variabili ext. Proprio "varname" è una scorciatoia. – RaGe

+0

ha fatto questo lavoro per te? – RaGe