Что у меня есть?Задача задачи плавного пуска
- Java исходный файл с основного класса (MainApp)
- Gradle сценарий сборки
apply plugin: 'application' mainClassName = "MainApp" sourceSets.main.java.srcDirs = ['.']
Так что, когда я gradle run
, он выполняет основной метод и все работает просто отлично.
C:\tmp\gradle-fun>gradle run :compileJava :processResources UP-TO-DATE :classes :run Hello MainApp !! BUILD SUCCESSFUL
Что я хочу сделать? Теперь мне было интересно узнать о чистой задаче (общие задачи сборки), чтобы очистить каталог сборки до выполнения задачи run
. Там это причина того, я хочу, чтобы убедиться, что каждый раз, когда Gradle должны скомпилировать Java-файлы и все .class файл должен быть обновлен (его некоторое требование)
То, что я пытался?
Добавлена задача оболочки, выполняющая чистую задачу и выполняющая задачу по порядку.
apply plugin: 'application' mainClassName = "MainApp" sourceSets.main.java.srcDirs = ['.'] task exec(dependsOn: ['clean', 'run'])
так, когда я бегу gradle exec
, он делает это задание правильно. Однако я чувствую, что его исправление работает, когда у вас есть дополнительные задачи только для заказа исполнения.
C:\tmp\gradle-fun>gradle run :clean :compileJava :processResources UP-TO-DATE :classes :run Hello MainApp !! :exec BUILD SUCCESSFUL
То, что я хотел бы знать?
Есть ли способ избежать написания задачи обертки и сделать некоторую магию градации для достижения этого требования?
На самом деле, я попробовал то же самое - но 'clean' задача вызываются непосредственно перед' run' - который удаляет каталог для сборки (что хорошо), но он удаляет недавно составленный класс. Таким образом, файл основного класса не будет запущен. :( – Kunal
Я обновил свой ответ с добавлением, предложенным Янито. –
Спасибо .. Он работал без каких-либо патч-работы (означает добавление задач-оберток). 'compileJava.mustRunAfter 'clean'' тоже делает то же самое. – Kunal