Как выполнить задачу Ant только, когда исходные файлы были изменены?

Используйте понимание списка с помощью set:

list1 = ["image1.png", "image2.png", "image3.png", "image3.png"]
list2 = ["image1.pdf", "image2.eps", "image3.ps"]

print [x for x in set(list1) for y in set(list2) if x.split('.')[0] == y.split('.')[0]]

Выход:

['image1.png', 'image2.png', 'image3.png']
16
задан Mnementh 2 February 2009 в 18:45
поделиться

2 ответа

Можно использовать Муравья актуальная задача создать свойство и выполнить другую цель, только если то свойство установлено.

я не знаю много о гибком проводе, но Вы, вероятно, хотите что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="compile">

   <target name="checkforchanges">
      <uptodate property="nochanges">
         <srcfiles dir="." includes="**/*.as"/>
         <srcfiles dir="." includes="**/*.mxml"/>
         <mapper to="applicaton.flex"/>
      </uptodate>
   </target>

   <target name="compile" depends="checkforchanges" unless="nochanges">
      ...
   </target>

</project>
21
ответ дан 30 November 2019 в 17:40
поделиться

задача OutOfDate от библиотека contrib муравья является IMO, намного более чистым, чем опция Ant uptodate. Причина состоит в том, что необходимо определить дополнительные цели только для установки свойства.

решение с Муравьем contrib (от их страницы в качестве примера):

<outofdate>
    <sourcefiles>
        <pathelement path="build.xml"/>
        <fileset dir="${lib.dir}"/>
    </sourcefiles>
    <targetfiles path="${jrun.file}"/>
    <sequential>
        <mkdir dir="${build.bin.dir}"/>
        <echo file="${jrun.file}" message="java -cp ${jrun.path} $*"/>
        <chmod file="${jrun.file}" perm="ugo+rx"/>
    </sequential>
</outofdate> 

Все сохранено приятно в одной единой цели.

10
ответ дан 30 November 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: