Windows下的Ant选项卡完成?

时间:2010-11-23 10:52:28

标签: ant command-prompt tab-completion

有没有办法在Windows(cmd.exe)下为Ant设置正确的标签?

我可以写出默认目标来列出所有其他目标,但这与你在Linux上获得的正确的选项卡完成情况不同。

3 个答案:

答案 0 :(得分:3)

你可以很容易地在powershell.exe中集成tabcompletion for ant,这比普通的旧cmd.exe强大得多。

Powershell.exe是Windows 7/8的一部分,但也可以作为XP中的单独组件安装(可以从Microsoft网站下载)。

我使用了https://github.com/peet/posh-ant下提供的脚本。该剧本还不完善,但95%的工作做得很好。

答案 1 :(得分:2)

BASH在内置complete命令中具有可自定义的完成机制。通过编写完整命令的脚本,您可以在几乎任何您能想到的事情上完成命令行完成。 ant目标完成是通过名为complete-ant-cmd.pl的Perl shell脚本完成的,该脚本放在Cygwin的系统范围的bashrc文件中。

CMD.exe没有这种机制,它不能扩展到已经内置的内容之外。

正如其他人所提到的,您可以尝试列出所有目标及其描述的ant -pant --projecthelp命令。试试这个build.xml文件:

<project name="test" default="target2" basedir=".">
    <description>
         This is a test project. It is to demonstrate the use
         of the &quot;ant -p&quot; command and show all described
         targets. The "&quot;" probably won't work, but you can use
         regular quotes.
    </description>

    <target name="target1"
        description="This is the prime target, but not the default"/>

    <target name="target2"
        description="This is the default target but not because I said it here"/>

    <!-- Target "target3" won't display in "ant -p" because -->
    <!-- it has no description parameters. Life is tough.   -->

    <target name="target3"/>

    <target name="target4"
        description="This is target #4, but there's no target3"/>
 </project>

输出将是:

$ ant -p
Buildfile: /Users/david/build.xml

    This is a test project. It is to demonstrate the use
    of the "ant -p" command and show all described
    targets. The """ probably won't work, but you can use
    regular quotes.

Main targets:

    target1  This is the prime target, but not the default
    target2  This is the default target but not because I said it here
    target4  This is target #4, but there's no target3
Default target: target2
$

答案 2 :(得分:1)

Windows上的此功能works in the Cygwin bash environment

我一直都在使用Cygwin。不知道并且没有启用此功能。但是我在更新我的个人资料后尝试了它,如该链接所述:

$ ant t<TAB>est<TAB>
test    test_1  test_2  test_3
$ ant test

我认为cmd.exe不支持这种customizable command completion

你是否可以使用PowerShell做类似的事情是我无法回答的问题。

BTW,“ant -p [rojecthelp]”是在构建文件中打印目标(具有描述属性集)的典型方法。而不是编写默认目标来执行此操作。