将 Gradle 任务标记为"failed"



我想在Gradle"构建"中添加一个额外的任务,特别是将文件复制到资源中。

所以我这样做:

task copySettingsGradle(type: Copy) {
from file("settings.gradle")
into file("src/main/resources")
}
build.dependsOn copySettingsGradle

但是,如果settings.gradle不在那里,它目前似乎会悄无声息地失败:构建照常进行。

如果此必需任务失败,我希望阻止生成。为此,在我看来,我需要两件事:一种确定from.file(...)找不到文件的方法,以及一种在任务上设置"失败"标志的方法。。。或者什么的。

为了解决这个问题,我选择了AbstractCopyTask,然后选择了来自…的CopySourceSpec.,但我一点也不知道。

当然,我可以使用非DSL Groovy来复制并执行成功检查。但让我困惑的是,将所需任务标记为失败的问题

这里有一个8年前的问题,关于"阻止Gradle构建的方法"。Peter Niederwiser在回答中表示,"已经讨论过增加(一种停止的方式("。

此外,在Gradle官方文档的这一页上,我看到使用了以下表达式:"任务将被标记为失败"(如果计时器用完(。"标记为失败"。。。这意味着???

我发现我没能找到任何关于这方面的信息,这真是太神奇了!"依赖"的概念包括依赖于其他事物的存在或成功。我不仅不知道Gradle现在是否引入了这样的机制(除了投掷GradleException(,我甚至找不到任何关于它的说法。困惑!

您可以使用ANT复制任务来完成此操作。Gradle允许将调用委托给底层ANT运行时。

ANT复制任务提供了一个名为failoneror的选项,它会让您在找不到文件的情况下获得失败行为。

它看起来像这样:

task copySettingsGradle {
doLast {
ant.copy(file: 'settings.gradle',
todir: 'src/main/resources',
overwrite: true,
failonerror: true)
}
}

有关所有可用选项,请参阅ANT文档:https://ant.apache.org/manual/Tasks/copy.html

最新更新