Подтвердить что ты не робот

Могу ли я сделать задачу копирования Ant для ОС OS?

У меня есть Ant script, который выполняет операцию копирования с помощью 'copy' task. Он был написан для Windows и имеет жестко закодированный C:\путь как аргумент todir. Я вижу, что задача "exec" имеет аргумент ОС, есть ли аналогичный способ развернуть копию на основе ОС?

4b9b3361

Ответ 1

Я бы рекомендовал поместить путь в свойство, а затем установить свойство условно на основе текущей ОС.

<condition property="foo.path" value="C:\Foo\Dir">
   <os family="windows"/>
</condition>
<condition property="foo.path" value="/home/foo/dir">
   <os family="unix"/>
</condition>

<fail unless="foo.path">No foo.path set for this OS!</fail>

В качестве побочного преимущества, когда он находится в свойстве, вы можете переопределить его без редактирования Ant script.

Ответ 2

Ранее опубликованные предложения конкретной переменной OS будут работать, но во многих случаях вы можете просто опустить префикс "C:" и использовать пути к файлам с прямым доступом (Unix style), и он будет работать как в системах Windows, так и в Unix.

Итак, если вы хотите скопировать файлы в "C:/tmp" в Windows и "/tmp" в Unix, вы можете использовать что-то вроде:

<copy todir="/tmp" overwrite="true" >
         <fileset dir="${lib.dir}">
             <include name="*.jar" />
         </fileset>
</copy>

Если вам нужно/нужно установить условный путь на основе ОС, его можно упростить как:

    <condition property="root.drive" value="C:/" else="/">
        <os family="windows" />
    </condition>
    <copy todir="${root.drive}tmp" overwrite="true" >
             <fileset dir="${lib.dir}">
                 <include name="*.jar" />
             </fileset>
    </copy>

Ответ 3

Вы можете использовать задачу условия для ветвления для разных задач копирования... из руководства ant:

<condition property="isMacOsButNotMacOsX">
<and>
  <os family="mac"/>

  <not>
    <os family="unix"/>

  </not>
</and>

Ответ 4

Вы не можете использовать переменную и назначить ее в зависимости от типа? Вы можете поместить его в файл build.properties. Или вы можете назначить его с помощью condition.

Ответ 5

Объявить переменную, которая является корневой папкой вашей операции. Префикс папки с этой переменной, в том числе в задаче копирования.

Задайте переменную на основе ОС с помощью условного выражения или передайте ее как аргумент Ant script.

Ответ 6

Ant -contrib имеет значение < osfamily/ > задача. Это выведет семейство os в свойство (которое вы укажете имя). Это может принести пользу.