Сделать чистое задание перед любым другим
Я хотел бы сделать задачу releaseBuild, которая будет выполнять чистую задачу перед сборкой проекта.
Я подготовил скрипт, который прекрасно работает для очистки перед выполнением задачи releaseBuild, а не для очистки непосредственно перед завершением, благодаря jar.mustRunAfter(clean)
,
Тем не менее, я хотел бы также иметь возможность выполнить задачу publishToMavenLocal, которая будет выполнена только после успешного завершения releaseBuild (таким образом, очистка и сборка). Тогда есть проблема.
plugins {
id 'java'
id 'maven-publish'
}
group 'com.example'
version '1.0-SNAPSHOT'
task releaseBuild {
outputs.upToDateWhen { false }
// generatePomFileForMavenJavaPublication.mustRunAfter(clean)
jar.mustRunAfter(clean)
releaseBuild.dependsOn(clean, build)
}
publishToMavenLocal.dependsOn(releaseBuild)
publishing {
publications {
mavenJava(MavenPublication) {
pom {
from components.java
packaging 'jar'
}
}
}
}
gradle releaseBuild
работает хорошо.gradle publishToMavenLocal
показывает ошибку:
> Task :generatePomFileForMavenJavaPublication
> Task :clean
> Task :compileJava NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar
> Task :publishMavenJavaPublicationToMavenLocal FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':publishMavenJavaPublicationToMavenLocal'.
> Failed to publish publication 'mavenJava' to repository 'mavenLocal'
> java.io.FileNotFoundException: __path__\build\publications\mavenJava\pom-default.xml (System nie może odnaleźć określonej ścieżki -- File not found)
Чисто после генерации pom файла.
Когда я раскомментирую строку с generatePomFileForMavenJavaPublication.mustRunAfter(clean)
У меня есть ошибка:
> Could not get unknown property 'generatePomFileForMavenJavaPublication' for task ':releaseBuild' of type org.gradle.api.DefaultTask.
1 ответ
- Добавьте в конце вашего сценария.
publishMavenJavaPublicationToMavenLocal.mustRunAfter(clean)
Существует плагин дерева задач, который очень полезен в таких ситуациях.
Удобно различать фазы конфигурирования и выполнения сборки Gradle при тонкой настройке конфигурации задач. Это поможет, если вы прочитаете о Build Lifecycle.
Добавление зависимостей к
clean
Задача обычно дает больше головной боли, чем пользы. Попробуйте добавить только "мягкие" зависимости, такие какmustRunAfter
и добавитьclean
Задача явно для вашей командной строки:
gradle clean releaseBuild publishToMavenLocal