我可以使用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.

我一直在阅读选择器之类的内容,但还没有找到实现我想要的结果的解决方案。

有什么建议吗?

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

相关内容

  • 没有找到相关文章

最新更新