为什么使用句点来分隔Ant构建文件中目标名称的约定?

4 java ant naming-conventions target

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

为什么这样:

<target name="some.target.name">
<!-- target child nodes -->
</target>
Run Code Online (Sandbox Code Playgroud)

什么时候可以这样做:

<target name="Some Target Name">
<!-- target child nodes -->
</target>
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*ill 9

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


akf*_*akf 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>
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

但是有了引号,它的处理方式不同: ant "some target name"

Buildfile: build.xml

some target name:
     [echo] reached some target name with spaces
Run Code Online (Sandbox Code Playgroud)