2012-12-17 19 views
15

datoCome si escludono una dipendenza transitiva progetto in Gradle

dependencies { 
    compile project(':subproject') { 
     transitive = false 
    } 
} 

Questo non funziona correttamente in Gradle 1.3. (cioè tutte le dipendenze sono incluse dal sottoprogetto)

Si tratta di un errore o esiste una sintassi diversa per l'esclusione delle dipendenze del progetto?

+3

Ho trovato un Jira su questo che non è stato ancora affrontato, ma sembra che ci sia un modo per aggirare la seguente: aggiungere parentesi aggiuntive attorno progetto come segue compilare (project (': subproject')) {transitive = false} - Sto usando questo e funziona per me - non intuitivo ma efficace –

+0

Questo commento dovrebbe essere contrassegnato come risposta. Lo sfortunato aspetto di questo è che una volta che si escludono tutti i progetti, se si include uno di questi set (perché è sufficiente un sottoinsieme dei barattoli in quella lista) il gradle non lo lascerà. Quindi per i progetti pazzi divertiti escludendo dep dal dep solo per fare qualcosa di semplice. – Core

risposta

29

La sintassi mostrata aggiungerà un nuovo (cosiddetto dinamica) Proprietà transitive all'oggetto Project, che, se non utilizzato da qualche altra parte, non avrà alcun effetto. Riceverai un avvertimento che le proprietà dinamiche sono state deprecate, il che è un segno di un potenziale errore nello script di build, e fallirà duro in Gradle 2.0.

La sintassi corretta è (come già indicato):

dependencies { 
    compile(project(':subproject')) { 
     transitive = false 
    } 
} 
+2

'Nessuna proprietà di questo tipo: transitive per classe: org.gradle.api.internal.project.DefaultProject_Decorated' – MariuszS

+0

la sintassi è stata corretta, ma la dipendenza è anche transitoria rispetto al progetto padre. –

Problemi correlati