我有一个名为source-locations的属性,它包含一个逗号分隔的文件夹列表,可以找到源代码。
source-locations=src,other_src_dir,yet_another_dir
在我的一项蚂蚁任务中,我使用这样的dirset:
<dirset dir="${basedir}" includes="${source-locations}"/>
我的问题是,在这种情况下,只有source-locations属性中列出的目录才会成为dirset的一部分,我也需要这些目录的所有子目录。我怎么能做到这一点?
任何输入都表示赞赏!谢谢!
答案 0 :(得分:1)
以下示例。
<mkdir dir="dir1" />
<mkdir dir="dir2" />
<mkdir dir="dir3" />
<mkdir dir="dir1/dir1a" />
<mkdir dir="dir1/dir1b" />
<mkdir dir="dir1/dir1c" />
<mkdir dir="dir2/dir2e" />
<mkdir dir="dir2/dir2f" />
<mkdir dir="dir2/dir2g" />
<mkdir dir="dir3/dir3h" />
<mkdir dir="dir3/dir3i" />
<mkdir dir="dir3/dir3j" />
<property name="source-locations" value="dir1,dir2,dir3" />
<pathconvert property="source-locations_mod" pathsep=",">
<regexpmapper from="^(.*)$" to="\1/\*\*" handledirsep="true" />
<map from="${basedir}/" to="" />
<dirset dir="${basedir}" includes="${source-locations}" />
</pathconvert>
<echo message="source-locations_mod: ${source-locations_mod}" />
<dirset id="dirset" dir="${basedir}" includes="${source-locations_mod}"/>
<property name="dirs" refid="dirset" />
<echo message="dirs: ${dirs}" />
答案 1 :(得分:1)
你可以试试这个:
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="path.antcontrib"/>
<target name="test">
<property name="source-locations" value="src,other_src_dir,yet_another_dir"/>
<!--Replace comma symbol to the `/**,` string and save new expression in to the source-locations_mod property-->
<propertyregex property="source-locations_mod"
input="${source-locations}"
regexp=","
replace="/**,"
global="true" />
<!--Add finally `/**` string to the source-locations_mod property. Was used var task to prevent property immutable -->
<var name="source-locations_mod" value="${source-locations_mod}/**"/>
<!--New source-locations_mod property was used-->
<dirset id="source.set" dir="${root.folder}" includes="${source-locations_mod}"/>
<!--Check the result-->
<pathconvert pathsep="${line.separator}"
property="dir.name"
refid="source.set">
<mapper type="identity" />
</pathconvert>
<echo>Folders: ${dir.name}</echo>
</target>
我使用了propertyregex库中的var和Ant-Contrib任务。