Как правильно выполнить ant.java из gradle? - PullRequest
10 голосов
/ 09 августа 2011

Я пытаюсь вызвать jar, но не вижу никакого вывода, когда я запускаю команду без аргументов, и когда я делаю , работающий с аргументами, я получаю следующую ошибку:

[ant:java] The args attribute is deprecated. Please use nested arg elements.
[ant:java] Java Result: 1

Как мне вызвать ant.java таким образом, чтобы я мог видеть вывод и мог передавать аргументы?

task compressJs(){
  ant.java(jar:"lib/yuicompressor-2.4.6.jar",fork:true,args:['js/file.js', '-o', 'build/js/file.js'])
}

Ответы [ 5 ]

15 голосов
/ 09 августа 2011

Ваши аргументы должны быть указаны так:

ant.java(jar:"lib/yuicompressor-2.4.6.jar",fork:true) {
    arg(value: "js/file.js")
    arg(value: "-o")
    arg(value: "build/js/file.js")
}

Практически то же самое, что вы делаете с ant, за исключением использования разметчика Groovy вместо XML.

По умолчанию ваш вывод будет идти на экран. Если вы хотите перенаправить его, установите свойство output.

8 голосов
/ 11 августа 2011

Как я уже говорил, лучше всего использовать задачу JavaExec. Чтобы выполнить Jar, вы можете сделать:

task exec(type: JavaExec) { 
    main = "-jar" 
    args relativePath("lib/yuicompressor-2.4.6.jar") 
    args ... // add any other args as necessary 
}

Комментарии в http://issues.gradle.org/browse/GRADLE-1274 также объясняют, как получить выходные данные из ant.java, но использование JavaExec является лучшим решением.

1 голос
/ 09 августа 2011

Чтобы получить вывод, установите флаг --info на gradle или установите свойство вывода на ant.java:

task compressJs(){
  ant.java(outputproperty: 'cmdOut', jar:"lib/yuicompressor-2.4.6.jar",fork:true,args:['js/file.js', '-o', 'build/js/file.js'])
  println(ant.project.properties.cmdOut)
}
0 голосов
/ 10 января 2014

В дополнение к ответу Криса Дейла, вы также можете использовать что-то вроде этого

ant.java(jar:"lib/yuicompressor-2.4.6.jar",fork:true) {
    arg(line: "js/file.js -o build/js/file.js")
}

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

0 голосов
/ 09 августа 2011

Задача Ant должна вызываться в фазе выполнение , а не в конфигурации :

task compressJs() << { // note the <<
  ant.java(...)
}

Вы также можете использовать задачу JavaExec от Gradle. Смотрите документацию.

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