Domanda

forse mi manca qualcosa circa il modo in cui funziona Gradle. Quello che abbiamo qui è un progetto padre, che contiene solo la configurazione, vale a dire non ci sarà alcun manufatto in fase di costruzione per la costruzione di esso, semplicemente gestisce e costruisce tutti i suoi sottoprogetti.

Ora i sottoprogetti condividere alcune configurazioni di dipendenza, così ho pensato che cosa avrei fatto nella build.gradle del progetto principale è:

subprojects {
  dependencies {
    compile fileTree(dir: 'lib', includes: ['*.jar'])
  }    
}

che, però, non funziona, non riesce con un messaggio di errore piuttosto oscuro:

Un problema si è verificato valutando radice progetto 'qype-android' Causa: No firma del metodo: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile () è applicabile per tipi di argomenti: (Org.gradle.api.internal.file.DefaultConfigurableFileTree) valori: [file impostato 'lib'] Possibili Le soluzioni: modulo (java.lang.Object)

Dopo alcuni tentativi ed errori, ho potuto "fix" questo problema applicando la 'java' plugin per il progetto principale.

Come mai? Non vedo da nessuna parte dalla documentazione Gradle che una dipendenza fileTree richiede il plugin Java. Anche così, il motivo per cui avrei bisogno sul progetto che sta iniettando la configurazione, da quanto accade per il progetto che si sta configurando (nota che i sottoprogetti si applicano tutti i plug-in Java stessi)?

Questo significa che se ho N diversi sottoprogetti che sono tutti di varia natura, e si applicano diversi plugin, che i progetti genitori devono sempre applicare la serie di tutti Plugin esseri utilizzato da qualche parte a se stessa, troppo?

È stato utile?

Soluzione

Non è la fileTree che richiede 'java' plugin.

Il messaggio di errore si lamenta configurazione compile dipendenze indefinito. Java Plugin definisce questa configurazione per voi, in modo da poter aggiungere le dipendenze (incluso il FileTree) ad esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top