gpt4 book ai didi

gradle - 使用 Gradle 无需编译 Groovy 源代码即可生成 groovydoc

转载 作者:行者123 更新时间:2023-12-01 04:38:20 24 4
gpt4 key购买 nike

我试图从一些 groovy 代码生成文档,但 Gradle 失败,因为它在尝试编译代码时无法导入依赖项。这是意料之中的,因为该代码需要在这些依赖项可用之前在特定上下文中运行。我不知道为什么它甚至试图编译代码,它似乎应该只是解析源以提取文档,但这是一个附带问题。

我的 build.gradle:

apply plugin: 'groovy'

repositories {
mavenCentral();
}

dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.5'
}


sourceSets {
main {
groovy {
srcDirs = ['src/org/mysource']
}
}
}

我尝试了各种方法,例如 excludegroovyCompileCompileGroovy任务,但这没有区别。我无法在此上下文中提供依赖项。欢迎其他建议。任何可以确定使用 asciidoc 来记录 groovy 的可行解决方案的人都会加分,我也未能实现。

最佳答案

您有两个选项可以禁用 :compileGroovy运行时 groovydoc任务。先举一个简短的例子。我有一个 Groovy Gradle 项目,我在其中引入了一些使其编译失败的更改:

gradle groovydoc

输出:
> Task :compileGroovy FAILED
startup failed:
/home/wololock/workspace/upwork/jenkins-continuous-delivery-pipeline/src/com/upwork/util/MapUtils.groovy: 29: [Static type checking] - Cannot find matching method com.upwork.util.MapUtils#merge(V, java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 29, column 56.
= result[k] instanceof Map ? merge(resu
^
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileGroovy'.
> Compilation failed; see the compiler error output for details.

* 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 4s
1 actionable task: 1 executed

现在让我们仔细看看一个选项,它允许我在不编译此源代码的情况下生成 groovydoc。

1. 禁用 compileGroovy从命令行

您可以使用 -x切换到禁用 compileGroovy当您运行时 groovydoc Gradle 任务:
gradle clean groovydoc -x compileGroovy

输出:
> Task :groovydoc 
Trying to override old definition of task fileScanner

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed

2. 禁用 compileGroovybuild.gradle
如果您不想使用 -x切换,你期待 compileGroovy运行时要禁用的任务 groovydoc那么你可以禁用 compileGroovy通过修改 build.gradle 中的任务图:
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask(':groovydoc')) {
compileGroovy.enabled = false
}
}

只需将其添加到您的 build.gradle 中的某处文件。现在当你执行:
gradle groovydoc

任务 compileGroovy将被禁用并且源代码不会被编译。
> Task :groovydoc 
Trying to override old definition of task fileScanner

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed

关于gradle - 使用 Gradle 无需编译 Groovy 源代码即可生成 groovydoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com