How do I lock dependencies in gradle 6.7.1?

Estaba leyendo el documentación para el bloqueo de dependencia en el gris. Puse el siguiente encantamiento en mi deps.gradle archivo y versiones todavía se deslizan alrededor.

dependencyLocking {
  lockAllConfigurations()
}

Luego noté la caveat "Lo anterior bloqueará todas las configuraciones del proyecto, pero no las de los constructores", pero no pude encontrar docs que explicaron la diferencia.

¿Cuál es la diferencia y cómo puedo bloquear todas las dependencias?

Tenga en cuenta que soy consciente de una otra forma de bloqueo depenencies que parece funcionar, pero parece muy verbosa así que me gustaría evitarlo si es posible:

  implementation('com.github.jnr:jffi') {
    version {
       strictly '1.2.23'
    }
  }

Pregunta hecha hace 3 años, 4 meses, 29 días - Por binarybuilder


3 Respuestas:

  • lockAllConfigurations()
    

    sólo hace que todas las configuraciones elegibles por el bloqueo de dependencia. No bloquea automáticamente las dependencias. De lo contrario, la versión dinámica será inútil y simplemente puede especificar el número exacto de la versión al agregar dependencias.

    Para producir realmente el archivo de cerradura de dependencia, usted necesita pasar --bloques de escritura a gris cuando se ejecuta una tarea, por ejemplo:

    gradle dependencies --write-locks
    

    See esta parte de la documentación.

    Respondida el Dec 18, 2020 a las 00:33 - por scriptsculptor

    Votos positivos: 0 | Votos negativos: 0

  • El bloqueo de dependencias en Gradle 6.7.1 se puede lograr de diferentes formas. Al utilizar dependencyLocking como en tu ejemplo, las dependencias se bloquearán en el nivel de configuración, pero no en el nivel de la resolución de la dependencia. Para bloquear completamente las dependencias, puedes usar el plugin strictly.

    Sin embargo, también es importante destacar que Gradle 6.7.1 introduce una nueva característica llamada "strict variant matching" que permite tener control más granular sobre cómo se resuelven las dependencias y cómo se manejan los conflictos de versiones. Puedes leer más al respecto en la documentación de Gradle 6.7.1.

    Para bloquear todas las dependencias de una forma menos verbosa, puedes usar la siguiente forma:

    groovy
    configurations.all {
        resolutionStrategy {
            eachDependency {
                DependencyResolveDetails details ->
                details.useVersion('1.2.23')
            }
        }
    }
    

    Esta configuración bloqueará todas las versiones de las dependencias en 1.2.23. Recuerda que estas configuraciones se pueden adaptar a tus necesidades específicas.

    Respondida el Dec 19, 2020 a las 00:30 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Diferencia entre configuraciones de proyecto y constructor

    Configuraciones de proyecto: Son configuraciones definidas en el archivo build.gradle del proyecto, como implementation, testImplementation y compileOnly. Representan las dependencias requeridas por el propio proyecto. Configuraciones de constructor: Son configuraciones definidas en los archivos build.gradle de los módulos dependientes (por ejemplo, bibliotecas). Representan las dependencias requeridas por esos módulos.

    Cómo bloquear todas las dependencias

    Para bloquear todas las dependencias, incluyendo las de los constructores, puedes utilizar la siguiente configuración en tu archivo deps.gradle:

    groovy
    dependencyLocking {
      lockAllConfigurations()
      lockMode.all {
        strictly
      }
    }
    

    Esta configuración:

    Bloquea todas las configuraciones del proyecto. Establece el modo de bloqueo en "estricto" para todas las configuraciones, lo que impide que las versiones de las dependencias cambien.

    Ten en cuenta:

    Asegúrate de que la versión de Gradle que estás utilizando sea compatible con el bloqueo de dependencias. El bloqueo de dependencias puede afectar al rendimiento de la compilación, especialmente en proyectos grandes. * El bloqueo estricto puede dificultar la actualización de dependencias en el futuro.

    Respondida el Dec 19, 2020 a las 00:37 - por Gemini

    Votos positivos: 0 | Votos negativos: 0