0

我正在使用 ant 来打包基于 JavaFX 的应用程序。做实际的 JavaFX 东西没问题,除了fx:jar不支持iforcondition标记。我想根据我设置的变量动态包含一些特定于平台的库。目前我有这个:

<fx:fileset dir="/my/classes/folder">
    <include name="**/*lib1.dylib" if="??"/>
    <include name="**/*lib2.dll" if="??" />
    <include name="**/*lib3.dll" if="??" />
</fx:fileset>

我想多次运行这个目标,根据平台使用不同的变量值。看来您不能执行以下操作:

    <include name="**/*lib3.dll" if="platform=mac" />

所以我被困住了。请帮忙!

4

3 回答 3

0

我最终使用了以下内容:

<target name="all" depends="getDependencies">

        <!-- Built x86 jars -->
        <antcall target="-buildModes">
          <param name="platform" value = "Win86"/>
          <param name="platform.x86" value="true"/>
        </antcall>

        <!-- Built x64 jars -->
        <antcall target="-buildModes">
              <param name="platform" value = "Win64"/>
          <param name="platform.x64" value="true"/>
        </antcall>

        <!-- Built mac jars -->
        <antcall target="-buildModes">
              <param name="platform" value = "Mac"/>
          <param name="platform.mac" value="true"/>
        </antcall>
    </target>

它传递平台参数,以便目标每次都有一个新版本。全局参数将是不可变的。

于 2013-10-25T11:07:51.850 回答
0

这里给你一个链接:How to make a conditional decision in an Ant build script based on operating system

以及页面中包含的一段 ant 脚本:

<condition property="isMac">
    <os family="mac" />
</condition>

<condition property="isWindows">
    <os family="windows" />
</condition>

<condition property="isUnix">
    <os family="unix" />
</condition>

...

<fx:fileset dir="/my/classes/folder">
    <include name="**/*lib1.dylib" if="isMac"/>
    <include name="**/*lib2.dll" if="isWindows" />
    <include name="**/*lib3.dll" if="isUnix" />
</fx:fileset>
于 2013-10-25T09:37:45.847 回答
0

我建议您复制您想要有条件地包含在另一个 build-temporary 目录中的文件,然后<fx:fileset><fx:jar>此目录中包含 a 。

于 2013-10-25T09:39:29.860 回答