我正在尝试设置构建文件,我很好奇你是否可以在属性中使用通配符来表示文件路径?或者解决这个问题的更好方法是什么?
如下所示,我希望解决${dirtwo}
中以“foo-”开头的所有文件或目录,而不必手动将每个目录/文件包含为属性。
<?xml version="1.0" encoding="UTF-8"?>
<project name="core" default="build" basedir=".">
<property name="dirone" value="path/to/dir/one" />
<property name="dirtwo" location="path/to/dir/two/foo-*" />
<target name="phpmd" description="Generate pmd.xml using PHPMD">
<exec executable="phpmd">
<arg line="${dirone},${dirtwo}
xml
codesize,design,naming,unusedcode
--reportfile ${basedir}/build/logs/pmd.xml" />
</exec>
</target>
...
</project>
目前,无论我如何尝试使用通配符或转义通配符,我得到的都是错误。
Buildfile: /var/www/server/project/build.xml
phpmd:
[exec] The given file "/var/www/server/project/path/to/dir/two/foo-*" does not exist.
[exec] Result: 1
答案 0 :(得分:2)
Ant DirSet匹配包含/排除模式的目录。您可以将其与Pathconvert结合使用,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<project name="core" default="build" basedir=".">
<property name="mybase.dir" location="/path/to/your/base/dir" />
<dirset dir="${mybase.dir}" includes="**/foo-*" id="directories" />
<pathconvert pathsep=", " property="directory-list" refid="directories" />
<target name="phpmd" description="Generate pmd.xml using PHPMD">
<exec executable="phpmd">
<arg line="${directory-list}
xml
codesize,design,naming,unusedcode
--reportfile ${basedir}/build/logs/pmd.xml" />
</exec>
</target>
</project>
要测试dirset
和pathconvert
的结果,您可以使用:
<echo message="${directory-list}" />