Tengo una secuencia de comandos gradle complejo que envuelve una gran cantidad de funcionalidad en torno a la construcción y la implementación de una serie de proyectos netbeans en una serie de entornos.¿Cómo puedo importar un script de Gradle a otro?
La secuencia de comandos funciona muy bien, pero en esencia está todo configurado a través de media docena de mapas que contienen información del proyecto y del entorno.
Quiero resumir las tareas en otro archivo, de modo que simplemente pueda 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 centrales para una serie de proyectos y configurar esos proyectos con un conjunto simple 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 el momento.
Información adicional
Después de la respuesta de Tom continuación, pensé que iba a tratar y aclarar exactamente lo que quiero decir.
Básicamente tengo un script de gradle que ejecuta una serie de subproyectos. Sin embargo, los subproyectos son todos proyectos de Netbeans, y vienen con sus propios scripts de compilación ant, por lo que tengo tareas en gradle para llamar a cada uno de estos.
Mi problema es que tengo alguna disposición en la parte superior del archivo, tales como:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
entonces generar tareas tales como:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
que tienen muchos de este tipo de los fragmentos de generación de tareas, y todos son genéricos; dependen completamente de la configuración en la lista de proyectos.
Así que lo que quiero es una manera de poner esto en una secuencia de comandos independiente e importarlo en el siguiente tipo de camino:
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.
lo tanto, en este ejemplo, tasks.gradle tendrá toda la generación de tareas genérica código en, y se ejecutará para los proyectos definidos en el archivo build.gradle principal. De esta forma, tasks.gradle es un archivo que puede ser utilizado por todos los proyectos grandes que consisten en una serie de subproyectos con archivos de compilación Netbeans.
considerar "aplicable a partir del: 'other.gradle'" construir importar declaraciones externas. (Consulte "12.4. Configuración del proyecto utilizando un script de compilación externo" aquí http://gradle.org/0.9-preview-1/docs/userguide/tutorial_this_and_that.html#sec:configuring_using_external_script) –
@PetrGladkikh 'apply from' se ejecuta inmediatamente las tareas externas. Esto puede no ser preferible en la lógica de ejecución (es decir, me gustaría ejecutar las tareas cuando quiero, no de inmediato). –
Esta afirmación en el comentario anterior es ** no verdadera **: 'apply from' ejecuta inmediatamente las tareas externas. No te equivoques. Las tareas externas se configuran, no se ejecutan. – Jarekczek