如何从 gradle 正确执行 ant.java?

发布于 2024-11-28 08:04:43 字数 397 浏览 0 评论 0原文

我正在尝试调用 jar,但是当我运行不带参数的命令时,我看不到任何输出,而当我使用参数运行时,我收到以下错误:

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

How do I invoke ant.java 以这样的方式我可以看到输出并且可以传递参数?

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

I'm trying to invoke a jar, but I don't see any output when I run the command without args, and when I do run with args, I get the following error:

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

How do I invoke ant.java in such a way that I see output and can pass arguments?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

幽蝶幻影 2024-12-05 08:04:43

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

几乎与您对 ant 所做的相同,只是使用 Groovy 样式标记生成器而不是 XML。

默认情况下,您的输出将显示在屏幕上。如果要重定向它,请设置“输出”属性。

Your args should be specified like this:

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

Pretty much it is the same as you would do with ant except using the Groovy style markup builder instead of XML.

By default your output will go to the screen. If you want to redirect it, set the 'output' property.

琉璃梦幻 2024-12-05 08:04:43

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

As I said before, it's best to use the JavaExec task. To execute a Jar, you can do:

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

The comments in http://issues.gradle.org/browse/GRADLE-1274 also explain how to capture output from ant.java, but using JavaExec is the better solution.

画离情绘悲伤 2024-12-05 08:04:43

要获取输出,请在 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)
}

To get the output set the --info flag on gradle or set the outputproperty on 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)
}
一人独醉 2024-12-05 08:04:43

Ant 任务需要在执行阶段调用,而不是配置阶段:

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

您还可以使用 Gradle 的 JavaExec 任务。请参阅文档。

The Ant task needs to be invoked in the execution phase, not the configuration phase:

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

You could also use Gradle's JavaExec task. See the documentation.

ゃ人海孤独症 2024-12-05 08:04:43

除了 Chris Dail 的回答之外,您还可以使用类似这样的内容,

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

这允许人们在一行中声明所有参数,与 ANT 中的用法非常相似。

In Addition to Chris Dail's answer , you can also use something like this

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

This allows one to declare all the arguments in a single line, very similar to the usage in ANT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文