4

我从来没有完全理解这一点,因为 name 属性似乎支持空格,但每个示例都使用更难阅读的句点来命名目标。

为什么这样做:

<target name="some.target.name">
<!-- target child nodes -->
</target>

什么时候可以这样做:

<target name="Some Target Name">
<!-- target child nodes -->
</target>

这是有什么原因,还是技术限制?构建属性也是如此。他们总是使用一些点符号。

4

2 回答 2

9

一个原因可能是如果没有空格,在命令行上指定构建目标会更容易。使用空格,您必须在整个目标名称周围加上引号。

于 2010-02-13T02:41:09.157 回答
6

如果目标名称中有空格,则需要将它们用命令行的引号括起来,否则处理器将像处理多个目标一样处理它们。

试试这个:build.xml:

<project name="MyProject" default="some target name" basedir=".">
  <target name="some target name">
    <echo>reached some target name with spaces</echo>
  </target>
  <target name="some">
    <echo>reached some</echo>
  </target>
  <target name="target">
    <echo>reached target </echo>
  </target>
  <target name="name">
    <echo>reached name</echo>
  </target>
</project>

使用空格运行ant some target name,您将获得以下信息:

Buildfile: build.xml

some:
     [echo] reached some

target:
     [echo] reached target 

name:
     [echo] reached name

BUILD SUCCESSFUL
Total time: 0 seconds

但使用引号,它的处理方式不同:ant "some target name"

Buildfile: build.xml

some target name:
     [echo] reached some target name with spaces
于 2010-02-13T02:40:58.423 回答