sábado, 25 de noviembre de 2017

Diferencia entre la implementación y compilar en gradle

Después de actualizar a android studio 3.0 y crear un nuevo proyecto me di cuenta de que en build.gradle hay una nueva forma de agregar nuevas dependencias:
  • En lugar de compile hay implementation
  • Y en lugar de testCompile hay testImplementation


Es uno de los cambios de ruptura que viene con gradle: 3.0 que Google anunció en IO17 gradle: 3.0. La configuración de compile ahora está obsoleta y debe ser reemplazada por la implementation o api.

Las dependencias que aparecen en las configuraciones api estarán transitivamente expuestas a los consumidores de la biblioteca y, como tales, aparecerán en la clase de compilación de los consumidores.

Las dependencias encontradas en la configuración de implementation , por el contrario, no estarán expuestas a los consumidores y, por lo tanto, no se filtrarán en el camino de clase de compilación de los consumidores. Esto viene con varios beneficios:
  • Las dependencias no se filtran en el classpath de compilación de los consumidores, por lo que nunca dependerá accidentalmente de una dependencia transitiva.
  • Una compilación más rápida gracias al tamaño reducido de classpath.
  • Menos recompilaciones cuando las dependencias de implementación cambian: los consumidores no tendrían que ser recompilados.
  • Cleaner publishing: cuando se usan conjuntamente con el nuevo complemento maven-publish, las librerías Java producen archivos POM que distinguen exactamente entre lo que se requiere compilar contra la biblioteca y lo que se requiere para usar la biblioteca en tiempo de ejecución (en otras palabras, no Mezclar lo que se necesita para compilar la propia biblioteca y lo que se necesita para compilar contra la biblioteca).

La configuración de compilación todavía existe, pero no debe utilizarse ya que no ofrecerá las garantías que proporcionan las configuraciones de api y de implementación.

Mas información: docs.gradle.org

Resumiendo 

La diferencia clave entre el complemento estándar de Java y el complemento de la biblioteca Java es que este último introduce el concepto de una API expuesta a los consumidores. Una biblioteca es un componente Java destinado a ser consumido por otros componentes. Es un caso de uso muy común en compilaciones de proyectos múltiples, pero también tan pronto como tenga dependencias externas.

El complemento expone dos configuraciones que se pueden utilizar para declarar dependencias: api e implementación. La configuración api se debe utilizar para declarar dependencias que se exportan por la API de biblioteca, mientras que la configuración de implementación se debe utilizar para declarar dependencias que son internas al componente.

Fuente: flipandroid.com

No hay comentarios:

Publicar un comentario