-1

我对 ant 很陌生(我来自 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} 代表什么?具体目录?什么?阅读 ant 手册 ( http://ant.apache.org/manual/properties.html ) 说这是:项目 basedir 的绝对路径(使用 basedir 属性设置)

那么,它是我的项目在 Eclipse 工作区中的绝对路径吗?

2)使用先前的信息,复制文件的两个目标文件夹到底是什么(使用“复制文件...到文件”标签)?

4

1 回答 1

2

1) ${basedir} 代表什么?具体目录?

是的。${basedir}是您启动 Ant 的目录,或者是在<project>Ant 文件顶部的实体中指定的目录。通常,它被设置为"."与包含 Ant 构建文件的目录相同的目录。

2)使用先前的信息,复制文件的两个目标文件夹到底是什么(使用“复制文件...到文件”标签)?

您没有列出整个 Ant 文件和整个属性文件。我什至不确定您的属性文件是否已读入(您需要<property file="xxxx.properties"/>在 Ant 文件的顶部附近)。

假设您在与 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}是存储 Antfile 的目录,并且您正在从该目录执行脚本。

注意我verbose="true"<copy>. 我建议你做出改变。这将向您显示正在复制的文件以及<copy>执行时间。这可能是处理这个问题的最好方法。

顺便说一句,我的一条规则是所有操作都发生在项目树中。您的最后一个tofile是在项目目录之外编写的(我假设您的 Ant 文件所在的位置)。想象一下有人检查项目,并发现构建过程在检查出的目录之外写入了一个文件,并在他的计算机上的一个随机位置。这样做只是被认为是不礼貌的。

更礼貌的是将所有文件都写在一个子目录下,做所有的构建处理。有些人使用build, 我更喜欢,target因为这是 Maven 标准。这个想法是我可以通过简单地删除那个目录来清理整个构建过程。

于 2013-10-06T20:23:38.767 回答