Как отложить / отложить выполнение примененного скрипта gradle до последнего скрипта сборки - PullRequest
1 голос
/ 04 июня 2019

У меня есть скрипт сборки Gradle, который выглядит так:

build.gradle

apply plugin: java
apply from: some-other-script.gradle


project.ext {
   distDir = "${xxx}"
   buildDir = "${yyy}"
   testLibDir = "${zzzz}"
   webArtifactFile = "directory/aaaa.war"
}

//code to clean, build code. etc.

и другой скрипт имеют:

some-other-script.gradle

//code to perform some common-tasks;
//Here I want to access the property exported by build.gradle

//like:
def file = webArtifactFile;

some code for that file.

Но так как я применил some-other-script.gradle сверху, я не могу получить экспортируемые свойства build.gradle file

Но если я apply from: some-other-build-script.gradle в конце build.gradle вроде:

apply plugin: java


project.ext {
   distDir = "${xxx}"
   buildDir = "${yyy}"
   testLibDir = "${zzzz}"
   webArtifactFile = "directory/aaaa.war"
}

//code to clean, build code. etc.

 apply from: some-other-script.gradle

Затем я могу получить доступ ко всем свойствам, экспортированным в сценарий сборки (но это делает код нечитабельным).

Итак, мой вопрос:

Как я могу отложить / отложить выполнение примененного скрипта Gradle до последнего из скриптов сборки?

PS. Я очень новичок в обучении, так что это может показаться экспертам безумным вопросом, но все же я ищу помощь в этом вопросе.

Надеюсь, что эксперты помогут мне.

1 Ответ

1 голос
/ 04 июня 2019

Проверьте эту документацию Gradle : Слушатель оценки проекта может использоваться в вашем случае.

У вас есть два варианта:

1) примените ваш плагин скрипта в afterEvaluate слушателе в вашем основном build.gradle скрипте:

build.gradle

apply plugin: java
afterEvaluate {
    //  some-other-script.gradle  script will have access to properties exported by main build script
    apply from: some-other-script.gradle
}

2) реализовать логику слушателя afterEvaluate в самом плагине скрипта:

build.gradle

apply plugin: java
apply from: some-other-script.gradle

некоторые-другие-script.gradle

afterEvaluate {
    def file = webArtifactFile;

    // some code for that file.
}

Решение 2, возможно, лучше, так как оно сохранит ваш основной build.gradle чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...