Tengo una secuencia de comandos gradle compleja que incluye una gran cantidad de funcionalidades en torno a la construcción e implementación de varios proyectos de netbeans en varios entornos.
El script funciona muy bien, pero en esencia todo está configurado a través de media docena de mapas que contienen información del proyecto y del entorno.
Quiero abstraer las tareas en otro archivo, para poder simplemente definir mis mapas en un archivo de compilación simple e importar las tareas desde el otro archivo. De esta manera, puedo usar las mismas tareas básicas para varios proyectos y configurar esos proyectos con un simple conjunto de mapas.
¿Alguien puede decirme cómo puedo importar un archivo gradle a otro, de manera similar a la tarea de Ant? He rastreado los documentos de Gradle en vano hasta ahora.
Información adicional
Después de la respuesta de Tom a continuación, pensé en intentar aclarar exactamente lo que quiero decir.
Básicamente, tengo un script de Gradle que ejecuta varios subproyectos. Sin embargo, los subproyectos son todos proyectos de Netbeans y vienen con sus propios scripts de compilación de hormigas, por lo que tengo tareas en gradle para llamar a cada uno de estos.
Mi problema es que tengo alguna configuración en la parte superior del archivo, como:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
Luego genero tareas como:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
Tengo muchos de estos tipos de fragmentos de generación de tareas, y todos son genéricos: dependen por completo de la configuración en la lista de proyectos.
Entonces, lo que quiero es una forma de poner esto en un script separado e importarlo de la siguiente manera:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
import("tasks.gradle") // This will import and run the script so that all tasks are generated for the projects given above.
Entonces, en este ejemplo, tasks.gradle tendrá todo el código genérico de generación de tareas y se ejecutará para los proyectos definidos en el archivo principal build.gradle. De esta manera, tasks.gradle es un archivo que puede ser utilizado por todos los proyectos grandes que constan de varios subproyectos con archivos de compilación de Netbeans.
apply from
ejecuta inmediatamente las tareas externas. Esto puede no ser preferible en la lógica de ejecución (es decir, querría ejecutar las tareas cuando quiera, no de inmediato).
apply from
ejecuta inmediatamente las tareas externas. No se deje engañar. Las tareas externas se configuran, no se ejecutan.