【问题标题】:How to set timeout for gradle publish task?如何为 gradle 发布任务设置超时?
【发布时间】:2021-10-19 08:42:11
【问题描述】:

我使用“gradle publish”命令发布到nexus repo。

配置如下:

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'org.gradle.sample'
            artifactId = 'library'
            version = '1.1'

            from components.java
        }
    }
}

任务超时可以这样设置:

task someTask {
    timeout = Duration.ofMinutes(25)
}

我想为发布配置部分生成的所有发布任务(我认为发布配置生成更多任务)设置超时。 像这样的东西似乎不起作用:

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'org.gradle.sample'
            artifactId = 'library'
            version = '1.1'

            from components.java

            timeout = Duration.ofMinutes(25)
        }
    }
}

【问题讨论】:

    标签: gradle publish


    【解决方案1】:

    Task publish 是一个没有操作的聚合任务。它将根据您的配置生成一个名为publishPubNamePublicationToRepoNameRepository 的任务,并替换PubName。您可以使用--dry-run 来查找它生成的任务:

    $ gradle publish --dry-run
    :compileJava SKIPPED
    :processResources SKIPPED
    :classes SKIPPED
    :jar SKIPPED
    :generateMetadataFileForMavenPublication SKIPPED
    :generatePomFileForMavenPublication SKIPPED
    :publishMavenPublicationToMavenRepository SKIPPED
    :publish SKIPPED
    
    BUILD SUCCESSFUL in 1s
    

    所以我的配置会生成一个发布任务publishMavenPublicationToMavenRepository。然后我可以找到那个任务并设置它的超时时间:

    plugins {
        id("java")
        id("maven-publish")
    }
    
    project.afterEvaluate {
        tasks.findByName("publishMavenPublicationToMavenRepository").configure {
            timeout = Duration.ofMillis(1)
        }
    }
    

    注意tasks.findByName 被放入project.afterEvaluate 块中,因为publish 动态生成该任务。

    这是预期的结果:

    $ gradle publish
    
    > Task :publishMavenPublicationToMavenRepository FAILED
    Requesting stop of task ':publishMavenPublicationToMavenRepository' as it has exceeded its configured timeout of 1ms.
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':publishMavenPublicationToMavenRepository'.
    > Timeout has been exceeded
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 1s
    5 actionable tasks: 3 executed, 2 up-to-date
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多