不使用ant-contrib如何在ant脚本中处理字符串?

来源:互联网 发布:淘宝开学季活动策划 编辑:程序博客网 时间:2024/06/16 07:48
       在编写ant脚本时经常会需要对字符串进行操作,又如:字符串替换、加前缀、加后缀等,现在一般都会使用ant-contrib来完成这些操作,但这样需要下载ant-contrib,配置classpath,并且还要在build.xml中添加相关的task等工作,用起来不是太方便。那能不能直接使用ant来完成这些工件呢?当前是可以的,需要使用<filterchain>,下面就简单介绍一下:

有一个jar的列表,它们都放在/lib中,需要将它们拼接成一个classpath:
<project>    <property name="libs.jarfile" value="        antlr-2.7.7.jar        aopalliance-1.0.jar        aspectjrt-1.8.6.jar        aspectjweaver-1.8.6.jar        commons-codec-1.10.jar        commons-logging-1.2.jar        jackson-annotations-2.6.1.jar        jackson-core-2.6.1.jar        jackson-databind-2.6.1.jar        javassist-3.18.1-GA.jar" />    <target name="test_string">        <loadresource property="testParam">            <!-- 对${libs.jarfile}进行处理 -->            <string value="${libs.jarfile}" />            <filterchain>                <!-- 去除${libs.jarfile}前后空格 -->                <trim />                <tokenfilter>                    <!-- 将${libs.jarfile}中的空格替换成" lib/" -->                    <replaceregex pattern="[ ]+" replace=" lib/" flags="g" />                </tokenfilter>                <!-- 添加"lib/"到字符串前部 -->                <prefixlines prefix="lib/" />                <!-- 添加"class-path: "到字符串前部 -->                <prefixlines prefix="class-path: " />            </filterchain>        </loadresource>        <echo message="${testParam}">        </echo>    </target></project>
运动结果:
class-path: lib/antlr-2.7.7.jar lib/aopalliance-1.0.jar lib/aspectjrt-1.8.6.jar lib/aspectjweaver-1.8.6.jar lib/commons-codec-1.10.jar lib/commons-logging-1.2.jar lib/jackson-annotations-2.6.1.jar lib/jackson-core-2.6.1.jar lib/jackson-databind-2.6.1.jar lib/javassist-3.18.1-GA.jar

<filterchain>可包含的元素如下,通过使用不同的组合,可以完成非常多的功能,详细可查询ant文档
FilterReaderClassConstantsEscapeUnicodeExpandPropertiesHeadFilterLineContainsLineContainsRegExpPrefixLinesReplaceTokensStripJavaCommentsStripLineBreaksStripLineCommentsSuffixLinesTabsToSpacesTailFilterDeleteCharactersConcatFilterTokenFilterFixCRLFSortFilterLineTokenizerFileTokenizerStringTokenizerReplaceStringContainsStringReplaceRegexContainsRegexTrimIgnoreBlankUniqFilter

另外,以下task中可以使用<filterchain>

Concat,Copy,LoadFile,LoadProperties,LoadResource,Move






0 0
原创粉丝点击