代码之家  ›  专栏  ›  技术社区  ›  viraptor

蚂蚁不断地重新编译

  •  0
  • viraptor  · 技术社区  · 14 年前

    我希望Ant能够知道什么时候不重新编译最新的文件——不幸的是,它一直在发生。我的生成目标仅包含:

    <javac srcdir="configuration" destdir="${build_env}">
      <compilerarg value="-Xlint"/>
    </javac>
    

    在详细的蚂蚁输出中,我得到:

    conf:
    [javac] MissingConfigurationException.java added as MissingConfigurationException.class doesn't exist.
    [javac] TestConfiguration.java added as TestConfiguration.class doesn't exist.
    [javac] TestConfigurationStorage.java added as TestConfigurationStorage.class doesn't exist.
    [javac] Compiling 3 source files to /blah/build
    

    但是它们确实存在,并且在“/blah/build/com/blah/configuration/…”目录中可用。

    我怎么修这个?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Matt    14 年前

    在过去,当类定义在与.java文件中声明的包不同的位置时,我已经看到了这一点。

    例如,如果我们在com/stackoverflow/ant/error中查找一个名为a java file.java的文件。最好将包定义为:

    package com.stackoverflow.ant.error;
    

    或者javac编译器将它放在与包声明所期望的不同的位置。

        2
  •  0
  •   laseray    11 年前

    有同样令人困惑的问题。

    您应该尝试运行Ant的文件位置的路径基础,而不仅仅是其中的相对目录。

    当包与“构建”中的包不完全匹配时,javac似乎会对如何正确地确定包产生问题,而这正是从您指定的方式开始的。因此,它只是编译这些情况下的所有内容。如果你仔细想想,这是有道理的,尽管它有一些缺点。已经构建的路径需要与要编译的路径完全匹配。当它没有被告知从写入“build”目录的同一个基目录开始时,它就不能展望未来并解析完整路径。

    如果您的代码在/blah/build/com/blah/configuration/中。然后尝试

    <javac srcdir="/blah/" destdir="${build_env}">
      ...
    </javac>
    

    <javac destdir="${build_env}">
      <src path="blah/"/>
      ...
    </javac>