【问题标题】:How do I override "java.io.tmpdir" when running ant/mantis junitreport?运行 ant/mantis junitreport 时如何覆盖“java.io.tmpdir”?
【发布时间】:2016-01-02 09:10:09
【问题描述】:

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

详细说明:我在 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>

这似乎是一种非常标准的用法,添加了“echo”语句来显示在执行任务时处于活动状态的系统属性值。

任务运行良好,除了处理写入相对于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

关键值是“java.io.tmpdir”值和写入“C:\Users\MyUser\AppData\Local\Temp\null591799606”。

我尝试过使用“sysproperty”临时更新临时目录,例如:

<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) 对“sysproperty”更新“junitreport”任务的系统属性的期望是否正确?例如,“sysproperty”的效果可能仅限于嵌套的“java”顺序任务调用,在这种情况下,更新对“junitreport”可见的期望是不正确的。

2) 或者,“java.io.tmpdir”是否存在限制,特别是它无法正常工作?

3) 或者,“sysproperty”中是否存在错误?

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

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

4) “mantis:modifyenvironment”的文档在哪里?我在我的本地“mantis.jar”中找到了这个,但我在 mantis 手册/文档中没有找到它的文档。

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

【问题讨论】:

  • 问题 5:为什么这是不好的做法? tmpdir 应该为这些事情服务。你不应该关心 tmpdir 的内容(除了偶尔清除它们),因为确定的结果被记录在另一个位置。

标签: java ant mantis


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多