我可以使用Ant文件集作为输入来构建另一个文件集吗?

时间:2016-10-11 13:05:20

标签: 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的lib及其相关的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>

我正在努力解决的问题是如何获取与exe和dll文件相关的pdb文件的文件集,即除MyApp_Tests.pdb,SomeLib.pdb和3rdParty.pdb之外的所有pdb文件。

我想要做的是使用exe和dll文件的初始文件集,并创建第二个文件集,其中包含那些扩展名为.pdb而不是.dll或.exe的文件名。

我一直在阅读选择器等但未能找到解决方案来实现我想要的结果。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您应该能够通过后续两个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>