2012-04-29 22 views
58

Quale sarebbe il modo più semplice per dire Gradle il seguente:Gradle - ottenere la versione più recente di una dipendenza

Recupera 'JUnit' dipendenza e prendere la sua ultima versione 'release'.

Amministratore Maven e Ivy repository è una sorta di nuovo per me - ho provato la seguente procedura e si traducono in "Could not resolve dependency ..." error:

  • Scrivi compile "junit:junit:latest.release" con i repository impostato solo mavenCentral()(tuttavia, funziona se dico "junit: junit: 4.10").

  • Scrivi compile "junit:junit:latest.release" con repository impostato nel seguente modo:

ivy { 
    // I also tried 'http://maven.org' and other possible variants.   
    url "http://repo1.maven.org" 
    layout "maven" 
} 
  • ha tentato di utilizzare Spring Source Ivy repository:
ivy { 
    artifactPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" 
    ivyPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" 
} 

Forse mi fraintendono qualcosa - il motivo per cui sarebbe sempre la versione più recente della dipendenza sia un compito così difficile che?

+0

La versione dinamica può essere un segnaposto per l'ultima versione disponibile, 'latest.integration'. [gradle documentation for dynamic versions] (https://docs.gradle.org/current/userguide/dependency_management.html#sub:dynamic_versions_and_changing_modules) – Bhavik

risposta

29

Gradle attualmente non supporta il Maven RELEASE (che è usato raramente e deprecato) ma supporta lo latest.release di Ivy. Tuttavia, la raccomandazione generale è di costruire contro versioni esatte. Altrimenti, la build può diventare una lotteria.

+0

Maven non supporta anche RELEASE. Solo numeri di versione fissi. – khmarbaise

+9

Ho ricontrollato. Maven supporta 'RELEASE', sia nella versione 2 che nella versione 3. –

+0

Hai ragione. Ho sbagliato che con le versioni dei plugin, causa per Maven 3 non consente più RELEASE/LATEST. Ma è ovviamente una cattiva pratica usare tali identificatori di versione. – khmarbaise

189

A volte può essere molto utile ottenere l'ultima versione, ad esempio se si rilasciano spesso le proprie dipendenze.

è possibile ottenere la versione più recente come

compile "junit:junit:+" 

o meglio specificare almeno la versione principale come

compile "junit:junit:4.+" 
+16

solo per la cronaca: questo dovrebbe essere davvero il doppio virgolette! Ho usato le virgolette singole per la maggior parte delle mie dichiarazioni di dipendenza e ho scoperto che junit 'code ': junit: 4. +'' Non funziona – azonli

+1

@azonli Sembra funzionare per me con virgolette singole, almeno per locali dipendenze. Che errore ottieni? –

+0

Ho provato in 'Gradle' 2.2, funziona bene – DerekY

17

Scopri i Gradle-versioni-Plugin. Fa esattamente quello che vuoi: https://github.com/ben-manes/gradle-versions-plugin

Per l'installazione, vedere la pagina di github. Fondamentalmente è necessario aggiungere queste due righe al build.gradle - file di progetto:

apply plugin: 'com.github.ben-manes.versions' 

buildscript { 
    [...] 
    dependencies { 
     classpath 'com.github.ben-manes:gradle-versions-plugin:0.8' 
     [...] 
    } 
} 
[...] 

quindi è possibile utilizzare il plugin, eseguendo questo comando nel terminale nel progetto dir:

./gradlew dependencyUpdates -Drevision=release 

E ti mostrerà quali dipendenze sono obsolete!

6

recente Guida per l'utente Gradle cita e spiega segno più nelle versioni:

Da 7.2. Declaring your dependencies:

dependencies { 
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' 
    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

... Lo script di build afferma anche che qualsiasi è necessario JUnit> = 4.0 per compilare i test del progetto.

Da 23.7. How dependency resolution works:

Se la dipendenza è dichiarata come una versione dinamica (come 1. +), Gradle sarà risolvere questo alla versione più recente disponibile statica (come 1.2) nel repository. Per i repository Maven, questo viene fatto usando il file maven-metadata.xml, mentre per i repository Ivy ciò avviene tramite l'elenco delle directory.

2

Se stai usando + per la versione, e volete sapere quale versione è effettivamente utilizzato, selezionare Project nella barra laterale, e poi sotto External Libraries si vedrà il numero di versione attualmente in uso.

Problemi correlati