寻找Ant的一些帮助,特别是'replaceregexp'方法。感谢任何和所有的建议。
问题
我们正在使用Ant来部署XML文件,并且需要在部署之前删除某些XML行。我们使用Microsoft VSTS作为部署工具。
我们需要Ant来扫描大量文件,并删除某些行。以下是我们需要分析和删除的一个小例子:
<classAccesses>
<apexClass>CaseEntitlementMilestoneCalc</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>CaseEntitlementMilestoneCalc_Test</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>CaseTriggerHandler</apexClass>
<enabled>true</enabled>
</classAccesses>
在此示例中,我们要查找并删除XML的这一部分:
<classAccesses>
<apexClass>CaseEntitlementMilestoneCalc_Test</apexClass>
<enabled>true</enabled>
</classAccesses>
我们在Ant中使用'replaceregexp'来执行此操作。这是我们为此编写的Ant代码:
<replaceregexp match="<classAccesses>\n(.*?)<apexClass>CaseEntitlementMilestoneCalc_Test<\/apexClass>\n(.*?)<enabled>(.*?)<\/enabled>\n(.*?)<\/classAccesses>" replace="" flags="gm" byline="false">
<fileset dir="${src.dir}/profiles" includes="**/*.profile" />
</replaceregexp>
当我通过终端在我的Mac上运行它时工作正常,但是当我尝试在VSTS上运行它时,它不会执行查找/替换。以下是每个的调试日志:
我的Mac调试声明
[replaceregexp] Replacing pattern '<classAccesses>\n(.*?)<apexClass>CaseEntitlementMilestoneCalc_Test<\/apexClass>\n(.*?)<enabled>(.*?)<\/enabled>\n(.*?)<\/classAccesses>' with '' in '/Users/david.morris/DevWorkspace/R_Salesforce_Amey/src/profiles/FSL Mobile User.profile' with flags: 'gm'.
[replaceregexp] Found match; substituting
[replaceregexp] File has changed; saving the updated file
VSTS调试声明
fileset: Setup scanner in dir d:\a\1\s\src\profiles with patternSet{ includes: [**/*.profile] excludes: [] }
Replacing pattern '<classAccesses>\n(.*?)<apexClass>CaseEntitlementMilestoneCalc_Test<\/apexClass>\n(.*?)<enabled>(.*?)<\/enabled>\n(.*?)<\/classAccesses>' with '' in 'd:\a\1\s\src\profiles\AAD JIT Provisioning.profile' with flags: 'gm'.
No change made
问题
谢谢!
答案 0 :(得分:0)
尝试使用此代码:
<classAccesses>.* .*<apexClass>CaseEntitlementMilestoneCalc_Test<\/apexClass>.* .*<enabled>(.*?)<\/enabled>.* .*<\/classAccesses>