Генерация groovydoc без компиляции Groovy источников с помощью Gradle



Я пытаюсь создать документы из какого-то заводного кода, но Gradle терпит неудачу, потому что он не может импортировать зависимости при попытке скомпилировать код. Это ожидается, так как этот код должен выполняться в определенном контексте, прежде чем эти зависимости будут доступны. Я не знаю, почему он даже пытается скомпилировать код, когда кажется, что он должен просто анализировать исходный код, чтобы извлечь документы, но это побочная проблема.



Мое телосложение.грэдл:



apply plugin: 'groovy'

repositories {
mavenCentral();
}

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


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


Я пробовал разные вещи, такие как exclude как в задачах groovyCompile, так и в задачах CompileGroovy, но это не имело никакого значения. Я не могу предоставить зависимости в этом контексте. Другие предложения приветствуются. Бонусные очки для всех, кто может определить работоспособное решение для использования asciidoc для документирования groovy, чего я также не смог достичь.

535   1  

1 ответ:

У вас есть два варианта отключения :compileGroovy во время выполнения задачи groovydoc. Сначала небольшой пример. У меня есть отличный проект 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. Отключить compileGroovy в build.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

Comments

    Ничего не найдено.