gpt4 book ai didi

search - 如何使用 Ant 在文件中搜索字符串(确保在源文件中找不到某些字符串)

转载 作者:IT老高 更新时间:2023-10-28 11:21:12 26 4
gpt4 key购买 nike

我想用 Ant 在我的源文件中搜索一个字符串。 (如果在我的源文件中找到某些字符串,我希望我的构建失败)。

所以,我应该能够在文件集中递归搜索某个字符串。

我已经发现可以使用 loadfile task检查whether a string pattern is found within one file .但这似乎只适用于单个文件。

另一方面,replace task将提供递归搜索和替换。我想我可以在构建之前这样做,并用会破坏构建的东西替换我的字符串,但我想知道是否有一些更清洁的解决方案?

br,图子

最佳答案

您可以考虑使用文件集 selectors去做这个。选择器允许您根据内容、大小、可编辑性等选择文件。您可以将选择器与基于名称的包含和排除或模式集结合使用。

下面是一个例子。第二个文件集派生自第一个文件集,带有一个简单匹配文件内容的选择器。如需更复杂的匹配,请使用 containsregexp selector .结果是一个仅包含与字符串匹配的文件的文件集。带有 resourcecount condition 的失败任务然后用于使构建失败,除非该文件集为空。

<property name="src.dir" value="src" />
<property name="search.string" value="BAD" />

<fileset id="existing" dir="${src.dir}">
<patternset id="files">
<!-- includes/excludes for your source here -->
</patternset>
</fileset>

<fileset id="matches" dir="${src.dir}">
<patternset refid="files" />
<contains text="${search.string}" />
</fileset>

<fail message="Found '${search.string}' in one or more files in '${src.dir}'">
<condition>
<resourcecount when="greater" count="0" refid="matches" />
</condition>
</fail>

(旧答案):如果调整或重用文件集可能有问题,这里有一个相对简单替代方案的说明。

这个想法是制作文件的副本,然后替换您要搜索的字符串在复制的文件中有一些标志值。这将更新任何匹配文件的最后修改时间。uptodate然后可以使用任务来查找受影响的文件。最后,除非没有匹配的文件,否则可以fail构建。

<property name="src.dir" value="src" />
<property name="work.dir" value="work" />
<property name="search.string" value="BAD" />

<delete dir="${work.dir}" />
<mkdir dir="${work.dir}" />
<fileset dir="${src.dir}" id="src.files">
<include name="*.txt" />
</fileset>
<copy todir="${work.dir}" preservelastmodified="true">
<fileset refid="src.files" />
</copy>
<fileset dir="${work.dir}" id="work.files">
<include name="*.txt" />
</fileset>
<replaceregexp match="${search.string}"
replace="FOUND_${search.string}">
<fileset refid="work.files" />
</replaceregexp>
<uptodate property="files.clean">
<srcfiles refid="work.files" />
<regexpmapper from="(.*)" to="${basedir}/${src.dir}/\1" />
</uptodate>
<fail message="Found '${search.string}' in one or more files in dir '${src.dir}'"
unless="files.clean" />

关于search - 如何使用 Ant 在文件中搜索字符串(确保在源文件中找不到某些字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com