【问题标题】:future-proofing java version check in ant scriptant 脚本中面向未来的 Java 版本检查
【发布时间】:2011-02-01 21:49:33
【问题描述】:

here 提供的脚本提供了一种检查 Ant 是否使用 Java 6 的好方法。

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="default">

    <target name="default" depends="javaCheck" if="isJava6">
        <echo message="Hello, World!" />
    </target>

    <target name="javaCheck">
        <echo message="ant.java.version=${ant.java.version}" />
        <condition property="isJava6">
            <equals arg1="${ant.java.version}" arg2="1.6" />
        </condition>
    </target>

</project>

但是,我有充分的理由认为,下一个担任我职位的人可能不是 Java 程序员,我想确保构建不会因为 Java 7 而失败。有什么方法可以分离字符串或否则要求 Java 6 或更高版本

【问题讨论】:

  • 您需要知道脚本中的 JVM 级别的原因是什么?
  • 我正在尝试防范 Mac 10.5 上的 Java 5 javac。该 javac 不知道 Java 6 库。 Ant 中的 任务没有提供指定所需版本的方法,没有使用 并提供 bin 的确切路径。 标签只处理兼容性;它不会使旧 javaroot 中的旧 javac 知道其他 javaroot 中的 jre 库。
  • 底线:我需要编译一个使用新的 Desktop 类的程序,并且我希望脚本在他们的 Java 不会削减它时警告人们。这样他们就不会得到关于未知符号的令人困惑的编译器错误。

标签: java ant


【解决方案1】:

您可以使用 ContainsRegEx 任务对 java 版本字符串进行正则表达式匹配。否则,很大程度上取决于您使用此版本检查所保护的内容。例如,javac 任务可以指定构建类的目标 JVM 版本。因此,如果您决定在示例中不使用条件方法,则可能取决于特定任务支持哪些特定任务,以及它们如何使用不同的 JVM 版本。

【讨论】:

    【解决方案2】:

    注意,ant.java.version 返回构建 Ant 的 JDK 版本,直到 Ant 1.6.5...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2018-12-16
      • 2011-11-12
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多