我对蚂蚁很新(我来自Maven,Ant对我来说是一场噩梦!)
我有这个目标:
<target name="linuxdriver"
description="Linux Driver">
<copy file="${deps.linuxdriver.dir}/${deps.linuxdriver.name}"
tofile="${project.datadir}/${deps.linuxdriver.name}"/>
<copy file="${deps.linuxdriver.dir}/${deps.linuxdriver.name}"
tofile="${project.deploy}/data/${deps.linuxdriver.name}"/>
<chmod perm="+x" file="${project.datadir}/${deps.linuxdriver.name}"/>
<chmod perm="+x" file="${project.deploy}/data/${deps.linuxdriver.name}"/>
</target>
我还有一个属性文件,其中定义了前一个ant代码中使用的“变量”(命名变量?),具体来说我有:
project.datadir = ${basedir}/data
project.deploy.dir = Release
project.deploy = ${basedir}/../${project.deploy.dir}
deps.linuxdriver.name = atmosfs
现在我有些疑惑:
1)什么代表$ {basedir}?特定目录?什么?阅读蚂蚁手册(http://ant.apache.org/manual/properties.html)说这是:项目基础的绝对路径(使用basedir属性设置)。
那么,它是我在Eclipse工作区中项目的绝对路径吗?
2)使用以前的信息,复制文件的两个目标文件夹究竟是什么(使用“copy file ... to file”标签)?
答案 0 :(得分:2)
1)什么代表$ {basedir}?特定目录?
是。 ${basedir}
是您启动Ant的目录,或Ant文件顶部<project>
实体中指定的目录。通常,它设置为"."
,使其与包含Ant构建文件的目录位于同一目录。
2)使用以前的信息,复制文件的两个目标文件夹究竟是什么(使用“copy file ... to file”标签)?
您没有列出整个Ant文件以及整个属性文件。我甚至不确定您的属性文件是否已读入(您需要在Ant文件顶部附近<property file="xxxx.properties"/>
)。
假设您在与Ant文件相同的目录中执行此操作,并且您的${basedir}
与Ant文件的目录相同:
<copy file="${basedir}/atmosfs/atmostfs"
verbose="true"
tofile="${basedir}/Release/atmosfs"/>
<copy file="${basedir}/atmofs/atmofs"
verbose="true"
tofile="${basedir}/../Release/data/atmofs"/>
同样,我假设${basedir}
是存储Ant文件的目录,并且您正在从该目录执行脚本。
请注意verbose="true"
中有<copy>
。我建议你做出改变。这将显示正在复制的文件以及执行<copy>
的位置。这可能是解决这个问题的最好方法。
顺便说一句,我所拥有的一条规则是所有操作都在项目树中进行。您的最后一个tofile
正在项目目录之外(我假设您的Ant文件所在的位置)。想象一下有人签出项目,并发现构建过程在签出目录之外写了一个文件并随机放在他的计算机上。这样做只是被认为是不礼貌的。
更礼貌的是编写所有文件并在子目录下进行所有构建处理。有些人使用build
,我更喜欢target
因为这是Maven标准。我的想法是,我只需删除一个目录即可清理整个构建过程。