У мене є складний скрипт gradle, який охоплює набір функціональних можливостей навколо побудови та розгортання ряду проектів netbeans у багатьох середовищах.
Сценарій працює дуже добре, але по суті все це налаштовано через півдюжини карт, що містять інформацію про проект та навколишнє середовище.
Я хочу абстрагувати завдання в інший файл, щоб я міг просто визначити свої карти у простому файлі збірки та імпортувати завдання з іншого файлу. Таким чином, я можу використовувати ті самі основні завдання для ряду проектів і налаштовувати ці проекти за допомогою простого набору карт.
Хтось може сказати мені, як я можу імпортувати один файл gradle в інший, подібно до завдання Ant? Поки що я не провів жодної роботи з документами Gradle.
Додаткова інформація
Після відповіді Тома нижче, я подумав спробувати пояснити, що саме я маю на увазі.
В основному я маю скрипт gradle, який запускає ряд підпроектів. Однак усі підпроекти - це проекти Netbeans, і вони мають власні сценарії побудови мурашок, тому у мене є завдання у gradle викликати кожен із них.
Моя проблема полягає в тому, що у мене є якась конфігурація у верхній частині файлу, наприклад:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
Потім я генерую такі завдання, як:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
У мене є багато подібних фрагментів генерації завдань, і всі вони є загальними - вони повністю залежать від конфігурації у списку проектів.
Тож, що я хочу, це спосіб помістити це в окремий скрипт та імпортувати його таким чином:
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.
Отже, у цьому прикладі task.gradle матиме весь загальний код генерації завдань і буде запускатись для проектів, визначених у головному файлі build.gradle. Таким чином, task.gradle - це файл, який може бути використаний усіма великими проектами, що складаються з ряду підпроектів із файлами збірки Ant і Netbeans.
apply from
негайно виконує зовнішні завдання. Це може бути не кращим у логіці виконання (тобто я б хотів виконувати завдання, коли захочу, а не відразу).
apply from
негайно виконує зовнішні завдання. Не вводьте в оману. Зовнішні завдання налаштовуються, а не виконуються.