как проверить символические ссылки с муравьем 1.9 - PullRequest
0 голосов
/ 08 января 2019

Мне нужно выполнить команду, если файл jar - это файл, а не символическая ссылка. Я нашел решение, которое работает только с муравьем 1.10.

Кто-нибудь знает, как это сделать с муравьем 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 голосов
/ 09 января 2019

Самый простой способ сделать это - использовать функцию record задачи Ant 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...