una transportador partes para iguales escuadras dividir con como circunferencia circulo build-process gradle

build process - transportador - ¿Hay alguna manera de dividir/factorizar partes comunes de la construcción de Gradle?



como dividir una circunferencia en 5 partes iguales (2)

La solución que encontré implica mapear las cosas que tienes en tu other.gradle file.

def getVersionName = { -> def stdout = new ByteArrayOutputStream() exec { commandLine ''git'', ''describe'', ''--tags'' standardOutput = stdout } return stdout.toString().trim() } ext{ VERConsts = [:] VERConsts[''NAME''] = getVersionName() VERConsts[''NAME_CALL''] = getVersionName }

Luego, en tu archivo build.gradle :

apply from: ''other.gradle'' // ... android { defaultConfig { versionName VERConsts[''NAME_CALL'']() // or versionName VERConsts[''NAME''] } }

Entonces, versionName tendrá el resultado de la llamada.

Notas :

  • VERConsts[''NAME''] = getVersionName() llamará a getVersionName() y almacenará su resultado. Utilizándolo en su secuencia de comandos, por ejemplo, versionName VERConsts[''NAME''] asignará el valor almacenado.
  • VERConsts[''NAME_CALL''] su lugar almacenará una referencia a la función. El uso de VERConsts[''NAME_CALL'']() en su script realmente llamará a la función y asignará el resultado a su variable

El primero dará como resultado que se asigne el mismo valor en el guión, mientras que el último puede dar lugar a valores diferentes (por ejemplo, si alguien presiona otra versión mientras se está ejecutando el guión).

Tenemos varias compilaciones independientes (cada compilación independiente es una compilación multiproyecto). Los scripts de construcción principales se vuelven bastante grandes ya que tenemos un conjunto de tareas comunes reutilizadas por subproyectos, así como también hay mucha repetición entre compilaciones independientes. Lo que estamos buscando es:

  1. Una forma de dividir el archivo de compilación principal en archivos más pequeños
  2. Una forma de reutilizar algunas partes de la construcción en otras construcciones independientes

¿Cuál es la mejor manera de lograr eso en Gradle?


Gradle 0.9 le permite importar un script de compilación desde otro script de compilación. Eche un vistazo a: Configuración del proyecto utilizando un script de compilación externo . Básicamente se apply from: ''other.gradle'' .

Una cosa que la guía del usuario no menciona es que el parámetro ''de'' puede ser una URL, por lo que puede hacer que sus scripts compartidos estén disponibles a través de HTTP en alguna parte (por ejemplo, su repositorio de subversión) e importarlos desde varias compilaciones.