我正在使用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>