ant:srcdir属性必须为非空

时间:2018-03-05 05:38:33

标签: ant

基本设置

蚂蚁新手; Mac OS

我想做什么

https://github.com/MIT-DB-Class/course-info-2017/blob/master/lab1.md#1-getting-started

我使用的命令

  • git clone git@github.com:MIT-DB-Class / simple-db-hw.git
  • cd simple-db-hw
  • brew install ant
  • ant test

我在最后一个命令后得到的内容

  

Buildfile:/Users/evan/Desktop/tmp1/simple-db-hw/build.xml

     

编译:

     

BUILD FAILED /Users/evan/Desktop/tmp1/simple-db-hw/build.xml:169:The   执行此行时发生以下错误:   /Users/evan/Desktop/tmp1/simple-db-hw/build.xml:46:   /Users/evan/Desktop/tmp1/simple-db-hw/build.xml:46:srcdir属性   必须是非空的

     

总时间:0秒

相关文件

以下是build.xml:https://gist.github.com/YikSanChan/9ce29ec239db525cd9d4bd62baa62095

我尝试过的事情

homebrew install ant的问题?我试图从http://ant.apache.org/bindownload.cgi下载1.10.2.tar.gz并获得相同的结果。

问题

怎么了?任何建议表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

问题出在Compile macrodef中。它尝试引用名为srcdir的属性,但它使用${}语法编写为标准属性引用,而不是使用@{}的属性语法。

所以在第46行尝试改变这个:

<macrodef name="Compile">
    <attribute name="srcdir"/>
    <attribute name="destdir"/>
    <element name="compileoptions" implicit="true" optional="true"/>
    <sequential>
        <mkdir dir="@{destdir}"/>
        <!-- avoids needing ant clean when changing interfaces -->
        <depend srcdir="${srcdir}" destdir="${destdir}" cache="${depcache}"/>
        <javac srcdir="@{srcdir}" destdir="@{destdir}" includeAntRuntime="no"
                debug="${compile.debug}" source="${sourceversion}">
            <compilerarg value="-Xlint:unchecked" />
            <!--<compilerarg value="-Xlint:deprecation" />-->
            <compileoptions/>
        </javac>
    </sequential>
</macrodef>

进入这个:

<macrodef name="Compile">
    <attribute name="srcdir"/>
    <attribute name="destdir"/>
    <element name="compileoptions" implicit="true" optional="true"/>
    <sequential>
        <mkdir dir="@{destdir}"/>
        <!-- avoids needing ant clean when changing interfaces -->
        <depend srcdir="@{srcdir}" destdir="@{destdir}" cache="${depcache}"/>
        <javac srcdir="@{srcdir}" destdir="@{destdir}" includeAntRuntime="no"
                debug="${compile.debug}" source="${sourceversion}">
            <compilerarg value="-Xlint:unchecked" />
            <!--<compilerarg value="-Xlint:deprecation" />-->
            <compileoptions/>
        </javac>
    </sequential>
</macrodef>

另请注意,destdir也应以同样的方式更改。