Зависимость файла сценария сборки Gradle - PullRequest
0 голосов
/ 12 декабря 2018

Как завершенный новичок в Gradle, у меня есть небольшая проблема с поиском правильного способа интеграции зависимости в мой процесс сборки.

Поскольку я не на 100% знаком с правильными терминами Gradle, я собираюсьиспользуйте специфичные для фреймворка термины с описанием.
Среда: Gradle-Wrapper (2.11)
InterShop-System с несколькими наборами картриджей (публикуемые проекты) с несколькими картриджами (публикуемые подпроекты -> каждый картридж создает свой отдельный выводрезультат (обычно это jar-файл и zip-файл).

Cartridge-Set-A
    Cartridge-a1
    Cartridge-a2
    ...
Cartridge-Set-B
    Cartrige-b1
    Cartrige-b2
...

Обычные зависимости java или проекта не являются проблемой.
У меня есть сценарии gradle, которые я хочу использовать в build.gradleиз нескольких разных картриджей, например, a1, b1, d4.

Моя идея заключалась в том, чтобы как-то опубликовать мои скрипты в хранилище nexus, что позволило бы мне указывать скрипты как зависимость.-> Проблема Я понятия не имею, как настроить gradlew-проект, который не имеет внутри Java-кода и не основан на плагинах межшопа.Есть межшкольные плагины, которые можно использовать только для статического содержимого (шаблоны, js и т. Д.), Но эти зависимости автоматически развертываются, что в моем случае не требуется, поскольку зависимость требуется только во время процесса сборки.

Короткая версия:
Я хочу иметь возможность вызывать следующую строку

apply from: 'path/to/file/subscript.gradle'

в моем build.gradle в нескольких проектах, не имея копии в каждом проекте.Какой лучший способ сделать это.

1 Ответ

0 голосов
/ 12 декабря 2018

Похоже, у вас есть некоторые обобщенные функциональные возможности, которые являются общими для многих различных сборок.В этом случае имеет смысл написать плагин, который реализует эту функциональность, а затем применить плагин к файлам build.gradle, для которых вы хотите его использовать:

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.task('hello') {
            doLast {
                println 'Hello from the GreetingPlugin'
            }
        }
    }
}

// Apply the plugin
apply plugin: GreetingPlugin

Вывод:

> gradle -q hello
Hello from the GreetingPlugin

https://docs.gradle.org/current/userguide/custom_plugins.html#sec:writing_a_simple_plugin

В противном случае вам потребуется настроить сборку из нескольких проектов и выполнить закрытие или задачу в allProjects с общей функциональностью

https://docs.gradle.org/current/userguide/multi_project_builds.html

...