使用ANT时,如果我有一些特定的java版本,我怎么才能定义任务?

StackOverflow https://stackoverflow.com/questions/147850

  •  02-07-2019
  •  | 
  •  

我遇到的问题是,只有在构建计算机中安装了Java 1.5时,才能执行Ant中的特定步骤。任务定义使用使用1.5编译的jar文件,因此使用1.4虚拟机运行将抛出IncompatibleClassVersion异常。

我必须找到一个解决方案,同时让这个任务适用于需要1.4的特定项目,但是我遇到了一个问题。如果我没有特定的Java版本,如何避免定义此任务并执行此可选步骤?

我可以使用<!> quot; if <!> quot;或<!>“;除非<!>”;目标标记上的标记,但这些标记仅检查是否设置了属性。我也希望有一个不需要额外库的解决方案,但我不知道标准中的内置功能是否足以执行这样的任务。

有帮助吗?

解决方案

通过 ant.java.version 属性公开Java版本。使用条件设置属性并仅在其为真时执行任务。

<?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>

其他提示

要检查构建文件的属性是${ant.java.version}

您可以使用 <condition> 元素使任务成为有条件的当财产等于某个值时:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top