如何使用ant 1.9测试符号链接

时间:2019-01-08 11:05:08

标签: ant

如果jar文件是文件而不是符号链接,则我需要执行命令。我找到了仅适用于ant 1.10的解决方案。

有人知道如何使用ant 1.9吗?

这是我的build.xml。

<?xml version="1.0"?>
<project name="AsterixDecoder" default="bm" basedir=".">
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="build"/>
  <property name="dist"  location="dist"/>
  <property environment="env"/>
  <condition property="exists.CCM_ADDR">
    <isset property="env.CCM_ADDR"/>
  </condition>

  <target name="compile" description="compile the source " >
    <mkdir dir="${build}"/>
    <javac srcdir="${src}" destdir="${build}" includeantruntime="false"/>
    <mkdir dir="${build}/resources"/>
    <copy todir="${build}/resources">
        <fileset dir="resources"/>
    </copy>
  </target>

  <target name="checkout" if="exists.CCM_ADDR">
    <ccmcheckout file="${dist}/AsterixDecoder.jar"/>
  </target>

  <target name="dist" depends="compile, checkout"
        description="generate the distribution" >
    <jar jarfile="${dist}/AsterixDecoder.jar" filesetmanifest="mergewithoutmain">
        <manifest>
            <attribute name="Main-Class" value="fr.eurocontrol.escape.ground.asterixdecoder.AsterixDataTree"/>
            <attribute name="Class-Path" value="."/>
        </manifest>
        <fileset dir="${build}"/>
    </jar>
  </target>

  <target name="check.symlink">
    <fileset dir="${dist}" id="fileset" includes="AsterixDecoder.jar">
      <symlink/>
    </fileset>
    <pathconvert refid="fileset" property="is.symlink" setonempty="false"/>
  </target>

  <target name="reconcile" depends="check.symlink" if="exists.CCM_ADDR" unless="is.symlink">
    <exec executable="ccm">
      <arg value="reconcile"/>
      <arg value="-udb"/>
      <arg value="${dist}/AsterixDecoder.jar"/>
    </exec>
  </target>

  <target name="bm" description="build management" depends="dist, reconcile">
  </target>
</project>

请随时提出改进建议。我仍然是编写蚂蚁文件的初学者。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用Ant的record任务的symlink功能。这将创建一个属性文件,该文件列出在给定资源集合中找到的所有符号链接。这是一个示例目标:

<target name="default">
    <symlink link="testdir" resource="build" />

    <symlink action="record" linkfilename="links.record">
        <fileset dir="." includes="*" />
    </symlink>

    <property file="links.record" />

    <condition property="testdir.is.symlink">
        <isset property="testdir" />
    </condition>

    <echo message="${testdir.is.symlink}" />
</target>