我正在使用maven-publish插件。我有一个出版物叫MyMedia。当我尝试执行tasks.findByName(“PublismyMediapublicationTosnapshotRepository”)
时,它返回null。如果有maven-publish插件创建的名称为null的任务,为什么会返回null。
我尝试了Francisco Mateo的建议,使用afterEvaluate方法,但这似乎对我也不起作用。
然而,当我试图找出真正的原因时,我发现了一个有趣的观察。我发现,当我从任务中调用tasks.findByName(“PublismyMediapublicationTosnapshotRepository”)
时,它工作得非常好,并打印出任务,即printTaskName按预期运行:
task printTaskName{
doLast{
println "task name found is :--- "+tasks.findByName("publishMyMediaPublicationToSnapshotRepository")
}
}
现在,最初在我的项目构建中,我有一个publishSnapshot任务,然后使用mustRunAfter方法排序逻辑:
task publishSnapshot (dependsOn: ['createMyMediaArchive','publishMyMediaPublicationToSnapshotRepository'])
tasks.findByName("publishMyMediaPublicationToSnapshotRepository").mustRunAfter tasks.findByName("createMyMediaArchive")
publishSnapshot.mustRunAfter tasks.findByName("publishMyMediaPublicationToSnapshotRepository")
Cannot invoke method mustRunAfter() on null object
FindByName方法在这里似乎不起作用,因为它返回null。
我是不是错过了一些基础知识?
编辑1:结束
import java.time.LocalDate;
import java.time.format.DateTimeFormatter
import java.text.SimpleDateFormat
import Tasks.PublishArtifacts
import org.gradle.api.GradleException
buildscript {
repositories {
abcRelease()
}
dependencies {
classpath "org.codehaus.groovy.modules.http-builder:http-builder:0.7"
classpath "commons-collections:commons-collections:3.2.1"
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.9.10"
}
}
repositories {
mavenCentral()
abcSnapshot()
xyzRelease()
}
apply plugin: 'maven-publish'
apply plugin: 'base'
apply plugin:'java'
apply from: "$rootDir/repositories.gradle"
def getMediaVersion(){
project.mediaVersion
}
configurations{
releaseMedia
}
publishing{
publications {
myMedia(MavenPublication) {
artifactId project.artifactId
artifact "$project.artifactId"+"-"+getMediaVersion()+".tgz"
version getMediaVersion()
}
}
repositories project.artifactoryRepositories
}
task publishSnapshot (dependsOn: ['createMyMediaArchive','publishMyMediaPublicationToSnapshotRepository'])
tasks.findByName("publishMyMediaPublicationToSnapshotRepository").mustRunAfter tasks.findByName("createMyMediaArchive")
publishSnapshot.mustRunAfter tasks.findByName("publishMyMediaPublicationToSnapshotRepository")
afterEvaluate { evaluated ->
evaluated.tasks.findByName("publishMyMediaPublicationToSnapshotRepository").configure {
println "My Media name --------- "+it.name
}
}
task printTaskName{
doLast{
println "task name found is :--- "+tasks.findByName("publishMyMediaPublicationToSnapshotRepository") // This returns task name as exected
}
}
task createMyMediaArchive{
doLast{
//code for creating media
}
}
编辑3:开始
如果我单独运行这些任务,即首先运行任务createMyMediaArchive,然后运行任务publishSnapshot,其中taskpublishSnapshot依赖于任务publishHelmMediaPublicationToSnapshotRepository,即。
task publishSnapshot (dependsOn: ['publishHelmMediaPublicationToSnapshotRepository'])
然后两个任务都成功运行。这证明gradle确实预先配置了PublishHelmediaPublicationTosnapshotRepository任务。还有gradlew任务--都打印出这个任务。
maven-publish
插件执行的许多配置都是懒洋洋的。
在afterevalue
中进行包装应该可以。
afterEvaluate { evaluated ->
evaluated.tasks.findByName("publishMyMediaPublicationToSnapshotRepository").configure {
println it.name
}
}
我有什么? 现在我想知道在任务执行之前是否可以使用clean task(常见的构建任务)来清理构建目录。 这背后是有原因的,我想确保每次gradle都应该编译java文件,并且所有.class文件都应该被刷新(这是一些要求) 我试过什么? 我想知道什么? 有没有什么方法可以避免编写包装器任务,并做一些梯度魔术来达到要求?
我想创建一个任务来运行串行命令。此时,我不需要从正在进行工作的方法返回任何内容。这可能会在以后发生变化,但我现在很好奇这是如何发生的。 这就是我所拥有的。我想为任务使用单独的方法,而不是创建匿名操作。我尝试返回void,结果是“void不能显式转换为任务”。我也试过了<代码>任务 在此过程中,我使用了一个线程来完成这项任务,但这次我想使用任务。 预计到达时间: 最后,这是我的完整解决方案
任务类: 正如您在上面看到的,我有方法,通过gradle运行它可以正常工作: 完整的请访问https://github.com/spring-black/tags/blob/master/build.gradle#L35。
我最近开始实现Gradle发布插件。我已经经历了https://github.com/researchgate/gradle-release#custom-释放步骤。 该插件正在将SNAPSHOT版本更新为发布版本,将当前SNAPSHOT版本更新为下一个版本。gradle发布任务也在执行编译、构建步骤。我在Jenkins中自动执行了此操作。我尝试了“构建任务 = []" 但构建任务仍已执行。我找不
任务:react native gradle plugin:compileKotlin失败的“compileJava”任务(当前目标为1.8)和“compileKotlin”任务(当前目标为11)jvm目标兼容性应设置为相同的Java版本。1个可执行任务:1个已执行 失败:构建失败,但有一个异常。 错误:任务执行失败:反应本机gradle插件:compileKotlin 无法查询任务:react
我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,