0

在过去的两天里,我一直在为此苦苦挣扎。堆栈溢出有几种解决方案对我不起作用。我试图忽略 prod 环境的 gradle 任务。要在构建时执行我的任务,即 dokkaHtml,我正在使用这个命令 -

tasks.named('preBuild') { finalizedBy(dokkaHtml) }

在不同的构建变体上运行时有没有办法禁用dokkaHtml任务(例如 - 忽略生产构建的任务)?

4

2 回答 2

0

我正在检查当前的产品风味并根据结果启用 gradle 任务。这个解决方案对我有用 -


def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
    Pattern pattern
    if( tskReqStr.contains( "assemble" ) )
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher( tskReqStr )
    if( matcher.find() )
        return matcher.group(1).toLowerCase()
    else
        return ""
}

var currentFlavor = getCurrentFlavor().toString()
//disable dokka for prod environment
if(!currentFlavor.contains("production")){
    tasks.preBuild.finalizedBy(dokkaHtml)
}
于 2022-02-22T19:10:28.343 回答
0

您可以尝试将 dokka 任务连接到特定风味preBuild,因此在您的情况下,它将是这样的:

tasks.named('preDevDebugBuild') { finalizedBy(dokkaHtml) }
tasks.named('preDevReleaseBuild') { finalizedBy(dokkaHtml) }
tasks.named('preTestDebugBuild') { finalizedBy(dokkaHtml) }
tasks.named('preTestReleaseBuild') { finalizedBy(dokkaHtml) }

这样你就可以省略 dokka 来获得产品的味道。

于 2022-02-17T20:44:41.597 回答