Я хотел бы создать задачу 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.