I am trying to generate docs from some groovy code but Gradle fails because it can't import the dependencies when trying to compile the code. This is expected since that code needs to run in a specific context before those dependencies are available. I don't know why it's even trying to compile the code when it seems that it should just be parsing the source to extract the docs but that's a side issue.
My build.gradle:
apply plugin: 'groovy'
repositories {
mavenCentral();
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.5'
}
sourceSets {
main {
groovy {
srcDirs = ['src/org/mysource']
}
}
}
I've tried various things such as exclude
in both the groovyCompile
and CompileGroovy
tasks but that made no difference. I'm not able to provide the dependencies in this context. Other suggestions welcome. Bonus points for anyone who can identify a workable solution for using asciidoc to document groovy, which I also failed to achieve.
You have two options to disable :compileGroovy
while running groovydoc
task. A short example first. I have a Groovy Gradle project where I have introduced some change that makes its compilation fail:
gradle groovydoc
Output:
> 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
Now let's take a closer look to an options that allow me to generate groovydoc without compiling this source.
compileGroovy
from command-lineYou can use -x
switch to disable compileGroovy
when you run groovydoc
Gradle task:
gradle clean groovydoc -x compileGroovy
Output:
> Task :groovydoc
Trying to override old definition of task fileScanner
BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed
compileGroovy
in build.gradle
If you don't want to use -x
switch and you expect compileGroovy
task to be disabled whenever you run groovydoc
then you can disable compileGroovy
by modifying task graph in build.gradle
:
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask(':groovydoc')) {
compileGroovy.enabled = false
}
}
Simply add it somewhere in your build.gradle
file. Now when you execute:
gradle groovydoc
the task compileGroovy
will be disabled and source code wont get compiled.
> Task :groovydoc
Trying to override old definition of task fileScanner
BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed