我如何覆盖" java.io.tmpdir"什么时候运行ant / mantis junitreport?

时间:2015-10-05 16:18:41

标签: java ant mantis

Net:' junitreport'似乎没有提供一种方法来设置它在执行转换时使用的临时文件夹,并且似乎没有一种方法可以更新' java.io.tmpdir'用于报告任务。在这种情况下,设置' user.home'或者' java.io.tmpdir'调用ant时从命令行调用不是可以使用的解决方案。

详细说明:我在ant / mantis中使用junit任务,使用以下语法:

<target name="unittest_report">
  <sequential>
    <echo>User Home [ user.home ] [ ${user.home} ]</echo>
    <echo>Java Temp [ java.io.tmpdir ] [ ${java.io.tmpdir} ]</echo>
    <junitreport todir="${dir.unittest.reports}/raw">
      <fileset dir="${dir.unittest.reports}/raw">
        <include name="TEST-*.xml"/>
      </fileset>
      <report format="frames" todir="${dir.unittest.reports}"/>
    </junitreport>
  </sequential>
</mantis:modifyenvironment>

这似乎是一个非常标准的用法,增加了&#34; echo&#34;用于显示在执行任务时处于活动状态的系统属性值的语句。

任务运行正常,但处理相对于java临时目录(java.io.tmpdir)编写临时输出:

[15:55:03+0000/tester/unittest_report/echo] User Home [ user.home ] [ C:\Users\MyUser ]
[15:55:03+0000/tester/unittest_report/echo] Java Temp [ java.io.tmpdir ] [C:\Users\MyUser\AppData\Local\Temp\ ]
[15:55:04+0000/tester/unittest_report/junitreport] Processing c:\work\tester\build\reports\unittest\raw\TESTS-TestSuites.xml to
    C:\Users\MyUser\AppData\Local\Temp\null591799606

关键值是&#34; java.io.tmpdir&#34;值和写入&#34; C:\ Users \ MyUser \ AppData \ Local \ Temp \ null591799606&#34;。

我尝试使用&#34; sysproperty&#34;临时更新临时目录,例如:

<mantis:modifyenvironment>
  <sysproperty key="java.io.tmpdir" value="${dir.build}/junit.report.tmp"/>
  <sequential>
    <echo>User Home [ user.home ] [ ${user.home} ]</echo>
    <echo>Java Temp [ java.io.tmpdir ] [ ${java.io.tmpdir} ]</echo>
    <junitreport todir="${dir.unittest.reports}/raw">
      <fileset dir="${dir.unittest.reports}/raw">
        <include name="TEST-*.xml"/>
      </fileset>
      <report format="frames" todir="${dir.unittest.reports}"/>
    </junitreport>
  </sequential>
</mantis:modifyenvironment>

但是,这没有效果。

然后:

1)这是对#34; sysproperty&#34;的正确期望吗?更新&#34; junitreport&#34;的系统属性任务?例如,&#34; sysproperty&#34;可能仅限于嵌套&#34; java&#34;顺序任务调用,在这种情况下,期望更新对于&#34; junitreport&#34;会不正确的。

2)或者,&#34; java.io.tmpdir&#34;是否存在限制?特别是这会阻止它工作?

3)或者,&#34; sysproperty&#34;?

中是否存在错误

对于这个问题,我无法更新&#34; java.io.tmpdir&#34; (或&#34; user.home&#34;)从命令行。这些值不能在比#jun; junitreport&#34;更广泛的范围内修改。任务调用。

最后:不确定它是否适合同一组问题:

4)&#34; mantis:modifyenvironment&#34 ;?的文档在哪里?我在本地&#34; mantis.jar&#34;中找到了这个,但我在mantis手册/文档中找不到它的文档。

5)&#34; junitreport&#34;通过&#34; java.io.tmpdir&#34;修改文件系统没有可能的覆盖似乎是非常糟糕的做法。

1 个答案:

答案 0 :(得分:0)

关于关于sysproperty的问题1-3我可以告诉你,它可能被使用的唯一地方是在执行新的JVM之前:I.E。在java内以及类似的任务,例如junit。 (您可以在各自的文件中阅读。)