使用 Gradle 无需编译 Groovy 源代码即可生成 groovydoc
Generate groovydoc without compiling Groovy sources using Gradle
我正在尝试从一些 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']
}
}
}
我在 groovyCompile
和 CompileGroovy
任务中尝试了各种方法,例如 exclude
,但没有任何区别。我无法在此上下文中提供依赖项。欢迎其他建议。对于任何可以找到使用 asciidoc 记录文档的可行解决方案的人来说,奖励积分 groovy,我也未能实现。
您有两个选项可以在 运行 宁 groovydoc
任务时禁用 :compileGroovy
。首先是一个简短的例子。我有一个 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
当你运行groovydoc
Gradle任务时,你可以使用-x
开关来禁用compileGroovy
:
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。在 build.gradle
中禁用 compileGroovy
如果您不想使用 -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
我正在尝试从一些 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']
}
}
}
我在 groovyCompile
和 CompileGroovy
任务中尝试了各种方法,例如 exclude
,但没有任何区别。我无法在此上下文中提供依赖项。欢迎其他建议。对于任何可以找到使用 asciidoc 记录文档的可行解决方案的人来说,奖励积分 groovy,我也未能实现。
您有两个选项可以在 运行 宁 groovydoc
任务时禁用 :compileGroovy
。首先是一个简短的例子。我有一个 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
当你运行groovydoc
Gradle任务时,你可以使用-x
开关来禁用compileGroovy
:
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。在 build.gradle
中禁用 compileGroovy
如果您不想使用 -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