Выполнить Groovy-скрипт из Gradle без компиляции Java - PullRequest
0 голосов
/ 17 октября 2018

У меня есть проект Java с Gradle.Также я использую Groovy для генерации некоторого класса, который будет использоваться в коде Java.Gradle выполняет сценарий в отдельной задаче ниже:

task generateClass(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'generatorScript'
}

Если я запускаю эту задачу, она сначала запускает компиляцию Java, и только после этого выполняет сценарий.Поэтому, если компиляция не удалась, мой генератор сценария не будет выполнен.Как уже упоминалось, скрипт генерирует один класс, от которого фактически зависит мой Java-код, поэтому, если он не сгенерирован, Java не будет компилироваться.Порочный круг.

Сам скрипт не зависит от некоторых классов Java и помещается в отдельную директорию источников:

/src
   /main
      /java
          /...(java classes)
      /groovy
          generatorScript.groovy

Мне кажется, что ничто не мешает мне выполнять скрипт отдельно и независимо от компиляции Java,

Как мне этого добиться?

1 Ответ

0 голосов
/ 17 октября 2018

Проблема в том, что у вас есть генератор groovy в исходных наборах main, и вы пытаетесь скомпилировать этот groovy сценарий, чтобы использовать его как classpath для вашей задачи JavaExec.Вот почему задача compileJava выполнена, я думаю.

Вы можете сделать это другим способом, используя groovy.ui.GroovyMain для выполнения вашего скрипта, с последующим решением, основанным на этой ссылке

configurations {
    // a dedicated Configuration for Groovy classpath
    groovyScript
}

dependencies {
    // Set Groovy dependency so groovy.ui.GroovyMain can be found.
    groovyScript localGroovy()
}

task generateClass(type: JavaExec) {

    // Set class path used for running Groovy command line.
    classpath = configurations.groovyScript

    // Main class that runs the Groovy command line.
    main = 'groovy.ui.GroovyMain'

    // Pass your groovy script as argument of the GroovyMain main
    // (can be improved)
    args 'src/main/groovy/generatorScript.groovy'

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...