我正在尝试运行 JBoss TattleTale来自 Ant 构建文件。通常我像这样从命令行运行它:
java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt
哪里/home/myuser/projects/src
是我所有 JAR 所在的源目录,/home/myuser/tmp/tt
在哪里是我放置所有 TattleTale 报告的输出目录。
在 Ant 构建文件中,我使用以下内容:
<echo message="Running tattle-tale..."/>
<java fork="true" failonerror="true" jar="/home/myuser/jars/tattletale.jar">
<arg value="Xmx512m"/>
<arg value="/home/myuser/projects/lib"/>
<arg value="/home/myuser/tmp/tt"/>
</java>
当我从命令行运行这个目标时:
run-tattletale:
[echo] Running tattle-tale...
BUILD SUCCESSFUL
Total time: 3 seconds
当我去 /home/myuser/tmp/tt
我没有看到任何输出,但是 Ant 输出显示 SUCCESS
没有错误或警告。做我的 <arg>
看起来正确,如果不正确,我应该如何更改它们?如果它们看起来确实正确,我该如何调试?提前致谢!
最佳答案
两件事:
尝试在运行 Ant 时使用调试选项,并将输出保存到日志文件中。然后查看日志文件。它将向您展示它是如何执行 Java 命令的。这将帮助您找出 Ant
<java>
的位置。不同于直接从命令行运行 Java 的方式。它会让您能够调整您的<java>
任务。当参数用于
java
时命令本身,你使用<jvmarg>
而不是<arg>
:
一个例子:
<echo message="Running tattle-tale..."/>
<java fork="true"
failonerror="true"
jar="/home/myuser/jars/tattletale.jar">
<jvmarg value="-Xmx512m"/> <!-- Note the dash! -->
<arg value="/home/myuser/projects/lib"/>
<arg value="/home/myuser/tmp/tt"/>
</java>
尝试一下,然后使用 ant -d | tee ant.out
运行如果你在 Unix/Linux 上。在 Windows 上,您必须执行 ant -d > ant.out.txt
这会将输出保存在 ant.out.txt
中, 但不会在 ant
时显示输出正在运行。
关于java - 这些 Ant/JVM args 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883877/