首页 文章

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

提问于
浏览
0

我正在使用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文件,并且随着项目的发展,构建生成的文件会经常更改 . )

我想收集"deliverable"文件(非测试exe 's and dll' s)及其pdb文件 without test 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 回答

  • 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>
    

相关问题