gradle: как вызвать ant.javac с несколькими включениями, определенными во время выполнения? - PullRequest
0 голосов
/ 26 февраля 2019

по некоторым причинам Я не использую плагин Java для Gradle, но я вызываю ant.javac динамически.Как создать динамический javac include() на основе списка?

, например:

def srcToCompile=["**/File1.java","**/File2.java","**/FileN.java"];
(...)
ant.javac(
    destdir: tmpDir,
    srcdir: srcDir
    includeantruntime:false,
    failonerror: true,
    fork: true,
    classpath : classpath1,
    debug: true
    )  {
        include(name: srcToCompile) //<< DOESN'T WORK, I also tested srcToCompile.join(":")
    }

спасибо.

EDIT : по«не работает», я имею в виду ant.javac не интерпретирует List или строку, разделенную двоеточиями: источник не найден и ничего не скомпилировано.ant.javac ожидает что-то вроде

include(name:"**/File1.java")
include(name:"**/File2.java")
include(name:"**/FileN.java")

, но я хочу создать этот список include при вызове gradle.

1 Ответ

0 голосов
/ 26 февраля 2019

Если вы посмотрите ant javac docs , вы увидите, что включает и включают оба, принимают строку, но вы пытаетесь передать коллекцию

Например:

<javac destdir="${build}"
       classpath="xyz.jar"
       debug="on">
  <src path="${src}"/>
  <src path="${src2}"/>
  <include name="mypackage/p1/**"/>
  <include name="mypackage/p2/**"/>
  <exclude name="mypackage/p1/testpackage/**"/>
</javac>

и

<javac srcdir="${src}"
       destdir="${build}"
       includes="mypackage/p1/**,mypackage/p2/**"
       excludes="mypackage/p1/testpackage/**"
       classpath="xyz.jar"
       debug="on"/>

В Gradle это будет

ant.javac(includes: srcToCompile.join(','), ...)

или

ant.javac(
   ... 
) {
   srcToCompile.each {
      include(name: it) 
   } 
} 
...