簡體   English   中英

如何從gradle正確執行ant.java?

[英]How do I execute ant.java properly from gradle?

我試圖調用一個罐子,但我沒有看到任何輸出,當我不ARGS運行命令,當與ARGS跑,我得到以下錯誤:

[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'])
}

你的args應該像這樣指定:

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")
}

除了使用Groovy樣式標記構建器而不是XML之外,它幾乎與使用ant相同。

默認情況下,您的輸出將轉到屏幕。 如果要重定向它,請設置'output'屬性。

正如我之前所說,最好使用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是更好的解決方案。

要獲取輸出,請在gradle上設置--info標志或在ant.java上設置outputproperty:

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)
}

除了Chris Dail的答案,你也可以使用這樣的東西

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

這允許我們在一行中聲明所有參數,非常類似於ANT中的用法。

需要在執行階段調用Ant任務,而不是配置階段:

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

您也可以使用Gradle的JavaExec任務。 請參閱文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM