这些Ant/JVM args有什么问题?

IAm*_*aja 5 java ant jvm-arguments

我试图从Ant构建文件运行JBoss TattleTale.通常我会从命令行运行它,如下所示:

java -Xmx512m -jar /home/myuser/jars/tattletale.jar /home/myuser/projects/lib /home/myuser/tmp/tt
Run Code Online (Sandbox Code Playgroud)

/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 Code Online (Sandbox Code Playgroud)

当我从命令行运行此目标时:

run-tattletale:
    [echo] Running tattle-tale...

BUILD SUCCESSFUL
Total time: 3 seconds
Run Code Online (Sandbox Code Playgroud)

当我去的时候,/home/myuser/tmp/tt我没有看到任何输出,但Ant输出显示SUCCESS没有错误或警告.我<arg>看起来是否正确,如果没有,我应该如何改变它们?如果它们看起来正确,我可以做些什么来调试?提前致谢!

Dav*_* W. 6

两件事情:

  1. 在运行Ant时尝试使用debug选项,并将输出保存到日志文件中.然后查看日志文件.它将向您展示它是如何执行Java命令的.这将帮助您确定Ant <java>与您直接从命令行运行Java的方式不同.它会让你能够调整你的<java>任务.

  2. 当参数用于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>
Run Code Online (Sandbox Code Playgroud)

尝试一下,ant -d | tee ant.out如果您使用的是Unix/Linux,请运行.在Windows上,您必须执行以下操作ant -d > ant.out.txt以保存输出ant.out.txt,但在ant运行时不会显示输出.


Mik*_*e Q 3

第一个 args 是 JVM 参数而不是程序参数,因此<arg>语法错误。对于这种情况,使用maxmemory任务参数会更容易java

因此,删除第一个<arg>并放入块maxmemory=512m<java>