Ant propertyselector issue



我试图使用反贡献任务从属性文件中提取一些值,但我不断得到下面的错误。我已经尝试了很多不同的搜索结果的想法,但我仍然没有进一步的进展。

xml:9: Property '${constituents}' is not defined.

我的构建文件是:

<project name="hello" default="foo">
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<target name="foo">
    <property file="props.file"/>
    <propertyselector property="constituents" match="bDIR1/workDir([^.]+)b" select="" casesensitive="false"/>
    <foreach list="${constituents}" target="print.name" param="myparam"/>
</target>
<target name="print.name">
    <propertycopy property="key" from="${myparam}"/>
    <echo message="${key}"/>
</target>

我的属性文件是:

identifier=ABC
constituents="ABC_Section"
constituents="$constituents DIR1/workDir/sec1/subSec1/File1"
constituents="$constituents DIR1/workDir/sec2/File2"
constituents="$constituents DIR1/workDir/sec3/File3"
constituents="$constituents DIR1/workDir/lib"
constituents="$constituents DIR1/OTHER"

我实际上是在尝试提取所有以

开头的测试
DIR1/workDir/......

我希望有人能给我一个指针,告诉我哪里出错了。

谢谢

参见propertyselector手册:

选择与给定正则表达式匹配的属性名,并以带分隔符的列表形式返回

所以你做错了——这是选择属性名称,而不是值。当您有一些属性与名称共享一个模式时,应该使用它,请参阅手册页中的示例。

另一种(或典型的Ant)方法:

constituents=ABC_Section,
    DIR1/workDir/sec1/subSec1/File1,
    DIR1/workDir/sec2/File2,
    DIR1/workDir/sec3/File3,
    DIR1/workDir/lib,
    DIR1/OTHER
然后

<for list="${constituents}" param="myparam">
    <sequential>
        <if>
            <matches string="@{myparam}" pattern="^DIR1/workDir/.+" casesensitive="false" />
            <then>
                <!-- deal with your property -->
                <echo>@{myparam}</echo>
            </then>
        </if>
    </sequential>
</for>

我没有在matches中测试正则表达式,您可能需要修复它。

相关内容

  • 没有找到相关文章

最新更新