Cómo actualizar las dependencias de Gradle a su última versión

6 minutos de lectura

¿Hay alguna manera fácil de hacer que gradle actualice las dependencias a su última versión disponible?

Para la reproducibilidad de compilación, todas mis dependencias se definen con un número de versión como este en mi archivo build.gradle:

dependencies {
    compile 'namespace:package1:version'
    compile 'namespace:package2:version'
    compile 'namespace:package3:version'
}

Periódicamente quiero actualizar cada paquete a su última versión. Por lo general, esto es lo primero que hago para un nuevo sprint después de realizar un lanzamiento.

Es un verdadero fastidio hacer esto manualmente para cada paquete. Idealmente, me gustaría un comando para actualizar el archivo build.gradle por mí, pero al menos un comando que imprima qué paquete necesita una actualización y cuál es el número de versión más reciente.

En Ruby Land, ejecutaría la actualización del paquete.

  • Escribí una herramienta de python para actualizar la versión de dependencia, puede intentarlo. github.com/Jintin/andle

    – Jintin

    4 de enero de 2016 a las 14:04

  • Posible duplicado de Cómo verificar si la dependencia de gradle tiene una nueva versión

    – Suhaib

    13 de julio de 2017 a las 5:14

  • @Suhaib tiene razón, stackoverflow.com/a/28683488/2763883

    – patrickfdsouza

    8 de septiembre de 2017 a las 6:12

  • Puede usar este sitio y buscar la última versión de cualquier dependencia: gradle please.appspot.com

    – Jay Patel

    19 de enero de 2018 a las 11:32


Esto es todo lo que se me ha ocurrido. Con gusto aceptaré otra respuesta si hay un método menos manual para hacerlo.

  1. En el estudio de Android, reemplazo cada versión de dependencia con un ejemplo positivo: compile 'namespace:package1:+'

  2. Sincronice o cree el proyecto, lo que hará que todas las dependencias se resuelvan a su última versión.

  3. En Android Studio coloque el cursor en cada línea de dependencia en build.gradle y presione alt+ingresar aparece un menú y puede seleccionar Reemplazar con una versión específica

  • Ver el Gradle-versiones-plugin.

    – Ben Manés

    8 de junio de 2015 a las 13:33

  • @Ben Manes: Esta debería ser una respuesta aceptada. ¡Gran complemento, buen trabajo!

    – Lucas Novak

    29 de julio de 2015 a las 10:05

  • ¡Esta respuesta es la mejor manera de buscar actualizaciones! Recuerde compilar el proyecto en el paso 2 o, de lo contrario, no funcionará.

    – Ray Li

    22 de julio de 2017 a las 14:45

  • En mi caso, la sincronización no descarga necesariamente la última versión. Parece que hay un tiempo de espera establecido en el caché hasta que vuelve a verificar la versión del servidor

    – Marian Kluhspies

    27/09/2017 a las 17:00

  • Yo diría que este es un método bastante arriesgado. Dejas de controlar qué versión has instalado localmente, qué usan tus compañeros de equipo y qué habrá, por ejemplo, en el servidor porque llegará una actualización de la biblioteca, justo antes del lanzamiento. Sé que esta es una solución similar a ^ en marcos de JavaScript, pero allí tenemos un archivo de bloqueo de paquete, que controla qué versión se usa exactamente en todo el equipo/entornos, etc.

    – Filip Kubala

    18 de marzo a las 15:13

añadir build.gradle:

plugins {
  id 'com.github.ben-manes.versions' version '0.17.0'
}

Entonces puedes hacer gradle dependencyUpdates para obtener un informe de nuevas versiones. A diferencia del complemento Maven del mismo nombre, no parece haber una forma de actualizar automáticamente el build.gradle aún.

Más documentación: https://github.com/ben-manes/gradle-versions-plugin

  • Ahora hay una forma de actualizar automáticamente las dependencias: github.com/patrikerdes/gradle-use-latest-versions-plugin

    – mernst

    26 de marzo de 2019 a las 23:44

  • @mernst su solución es la mejor, debería ser una respuesta separada para tener la visibilidad que merece

    – Marco Lackovic

    28 de marzo a las 16:03

avatar de usuario
Gorcyn

Realmente no es una buena práctica ya que las bibliotecas pueden incluir cambios que pueden romper su código.

Una sintaxis “tolerada” común para

compile 'namespace:package:major_version.minor_version.revision'

seria como

compile 'namespace:package:1.0.+'

considerando revisión es utilizado por los autores de la biblioteca como corrección de errores y actualizaciones de mejoras

Nota: acabo de hacer eso y tú podrías hacer

compile 'namespace:package:+'

Editar:
A Prueba de concepto de mi último comentario es posible que desee probar.
Esto se hizo en 5 minutos, así que no esperes que sea perfecto ni flexible.

  • Sí, entiendo que puede reemplazar parte de la versión con un + para resolver la última versión en el momento de la compilación, pero eso rompe la reproducibilidad de la compilación. Quiero depender de una versión específica como es la mejor práctica y ocasionalmente actualizar cada paquete.

    – Jared Kells

    16 de febrero de 2015 a las 10:33

  • ¿Una actualización a una versión específica? ¿Mayor, menor o revisión? compile 'namespace:package:1.0.+' se actualizaría a la última revisión como compile 'namespace:package:1.+' actualizaría a la última versión secundaria y compile 'namespace:package:+' al último importante.

    – Gorcin

    16 de febrero de 2015 a las 10:37

  • No quiero poner un plus porque eso significa que cada vez que ejecuto la compilación podría obtener una versión diferente de la biblioteca. Durante la mayor parte del proceso de desarrollo, la versión debe permanecer igual para que pueda probarse a fondo.

    – Jared Kells

    16 de febrero de 2015 a las 10:41

  • Por lo general, después de un lanzamiento, quiero actualizar cada biblioteca a su última versión. Esto se hará cada pocos meses. Las herramientas de dependencia que uso en otros idiomas admiten esto. NuGet y el paquete son ejemplos.

    – Jared Kells

    16 de febrero de 2015 a las 10:43

  • Un script que se modificaría para namespace:package:+después gradlew --refresh-dependencies después namespace:package:x.y.z donde x, y y z se leerían desde .idea/libraries/*.xml. Una característica bastante interesante.

    – Gorcin

    16 de febrero de 2015 a las 10:53

avatar de usuario
Paulo Linhares – Paquetes de aplicaciones

Yo también lo sufro. Y la mejor manera de verificar las dependencias, incluso manualmente, es revisar la Estructura del proyecto y buscar el nombre de la dependencia y ver si hay una versión más nueva.

El problema de que esta consulta solo verifica las dependencias presentes en el repositorio de Maven. Al menos ya va para la de Google.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Nota: si elige agregar la dependencia con la nueva versión, esto agregará una duplicidad en su aplicación Gradle, así que asegúrese de eliminar la fila de dependencia anterior.

##################

Otra posible solución rápida es a través de la línea de comandos:

./gradlew app:dependencies

Esto generará una salida como la siguiente. Tenga en cuenta que el asterisco apunta a una posible nueva versión existente.

ingrese la descripción de la imagen aquí

¿Ha sido útil esta solución?