所以ant文件集,如果我希望它是由各种目标通过其ID引用的单独任务,我需要声明该文件集中的根“dir”属性。即:
<fileset id="my.fileset" dir="myDir">
<includes name="**/*" />
</fileset>
在我的情况下,我有一组具有相同相对路径的文件,但根据不同的构建配置,它们将具有不同的根目录。即:
${dyanmic.root.dir}/com/name/package/file.class
我正在尝试使用文件的相对路径的文件集,但每次我引用文件集时,我都可以设置不同的“dir”属性来更改根目录。有什么想法吗?
答案 0 :(得分:0)
也许你可以使用multirootfileset(在Ant 1.9.4中引入)
只需将所有rootdir提供给basedirs属性。
所有这些dirs将共享嵌套包含,排除..
答案 1 :(得分:0)
您可以使用antcall
并将根目录作为参数传递给包含fileset
的目标。
<?xml version = "1.0"?>
<project name="project" default="main">
<target name="callee">
<echo message="Called... ${FOO}"/>
<fileset id="my.fileset" dir="${FOO}" includes="**/*" />
<property name="files" refid="my.fileset"/>
<echo message="Files: ${files}" />
</target>
<target name="caller">
<echo message="Calling...${FOO}"/>
<antcall target="callee" inheritall="false">
<param name="foo" value="${FOO}"/>
</antcall>
</target>
<target name="main" depends="caller" />
</project>
然后,用-DFOO=value
运行它以传递参数。例如,如果您的项目结构是这样:
.
├── 1
│ ├── a
│ └── b
├── 2
│ ├── c
│ └── d
└── build.xml
然后ant -DFOO=1
将导致:
caller:
[echo] Calling...1
callee:
[echo] Called... 1
[echo] Files: a;b
main:
BUILD SUCCESSFUL
ant -DFOO=2
将导致:
caller:
[echo] Calling...2
callee:
[echo] Called... 2
[echo] Files: c;d
main:
BUILD SUCCESSFUL