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

Я автоматизирую процесс сборки, используя этапы сборки Jenkins и Ant. У меня нормально работает операция сборки и тегирование контроля версий после сборки.

После сборки ряда проектов QT я хочу иметь возможность сохранить полезные артефакты из сборки.

В качестве средства для обсуждения/рассмотрения, скажем, у меня есть следующий набор файлов в каталоге сборки:

MyApp.exe
MyApp.pdb
MyApp_Tests.exe
MyApp_Tests.pdb
SomeLib.lib
SomeLib.pdb
3rdParty.lib
3rdParty.pdb
Utils.dll
Utils.pdb

(На самом деле существует гораздо больше exe-файлов, dll-библиотек и связанных с ними файлов pdb, а файлы, создаваемые сборкой, часто изменяются по мере развития проекта.)

Я хочу собрать «доставляемые» файлы (не тестовые exe и dll) и их pdb-файлы без тестовых exe-файлов, файлов lib и их pdb-файлов.

Я считаю, что могу получить набор файлов для доставки для использования в задаче копирования:

<copy todir="${artifactDestination}" failonerror="true">
    <fileset dir="./build">
        <include name="*.exe" />
        <include name="*.dll" />
        <exclude name="*_Tests*" />
    </fileset>
</copy>

Я борюсь с тем, как получить набор файлов pdb, относящихся к файлам exe и dll, то есть ко всем файлам pdb, кроме MyApp_Tests.pdb, SomeLib.pdb и 3rdParty.pdb.

Я хотел бы использовать исходный набор файлов exe и dll и создать второй набор файлов из того, который имеет эти имена файлов с расширением .pdb вместо .dll или .exe.

Я читал о селекторах и тому подобном, но не смог найти решение для достижения желаемого результата.

Какие-либо предложения?


ant
person Lee Carter    schedule 11.10.2016    source источник


Ответы (1)


Вы должны быть в состоянии достичь того, чего хотите, с двумя последующими copy задачами. С первым вы уже разобрались. Чтобы скопировать файлы .pdb, соответствующие файлам, скопированным на первом этапе, вы можете использовать селектор present.

<copy todir="${artifactDestination}" failonerror="true">
  <fileset dir="build">
    <or>
      <present targetdir="${artifactDestination}">
        <globmapper from="*.pdb" to="*.exe"/>
      </present>
      <present targetdir="${artifactDestination}">
        <globmapper from="*.pdb" to="*.dll"/>
      </present>
    </or>
  </fileset>
</copy>
person Stefan Bodewig    schedule 11.10.2016
comment
Я пытался использовать globmapper во второй копии, но добился только копирования первого файла в место назначения с другим расширением файла. Похоже, я размышлял (почти) правильно, но ваше предложение — именно то, что мне было нужно. Спасибо @StefanBodewig - person Lee Carter; 12.10.2016