首页 > 解决方案 > 如何使用 Java 10 及更高版本跳过 ant 中的 javah 任务?

问题描述

我的 build.xml 中有一个javah任务。该javah任务不再适用于 Java 10 及更高版本,因此我添加nativeHeaderDir了一个javac任务,它运行良好。但是,我仍然想保留该javah任务,以便相同的 build.xml 适用于较旧的 Java。

javah仅在使用 Java 10 及更高版本运行时,如何使 ant 跳过任务?更一般地说,有什么办法可以根据Java版本切换build.xml中的执行路径吗?或者,是否有任何其他标准方法可以将javah任务从旧 Java 迁移到 Java 10/11,同时保持向后兼容性?

标签: javaantjavah

解决方案


使用<javaversion>Ant 1.10.2 或更高版本支持的条件。

来自Ant 邮件列表

Ant 的最新版本(从 1.10.2 开始)有一个“javaversion”条件,您可以使用它来设置一个“属性”,然后可以将其与目标上的“if”/“unless”属性一起使用。这是一个例子:

<target name="the-one-which-has-javah-task" depends="check-java-version"
unless="java10+">
    ...
</target>   

<target name="check-java-version">
    <condition property="java10+">
      <javaversion atleast="10"/>
    </condition>
</target>

推荐阅读