我想制作 releaseBuild 任务,在构建项目之前执行干净的任务。
我已经准备好了脚本,它可以很好地在 releaseBuild 任务之前进行清理,而不是在完成之前清理,这要归功于jar.mustRunAfter(clean)
.
但是,我还希望有可能执行仅在 releaseBuild 成功完成后才会执行的 publishToMavenLocal 任务(因此清理和构建)。然后就有问题了。
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.