7

在 Ant 中,如果我有一个单独的编译 CLASS 文件位于我的项目中的某个位置(比如 at gen/stragglers/SomePOJO.class,有没有办法专门将该类文件添加到我的<javac>编译类路径中,当我目前有以下内容时:

<javac includeantruntime="false" srcdir="src/main/java"
        destdir="gen/bin/main">
    <classpath refid="main.compile.path"/>
</javac>

如果不是,为什么?如果是这样,怎么做?提前致谢!

4

2 回答 2

6

您不能像这样添加单个类文件,您将目录添加到类路径中,编译器将在该目录下从其包结构派生的相对路径中查找类。据我所知,这是不可协商的——目录结构必须与包结构相匹配。

因此,例如,如果定义的类SomePOJO.class是,stragglers.SomePOJO那么您将gen目录添加到类路径

<javac includeantruntime="false" srcdir="src/main/java"
        destdir="gen/bin/main">
    <classpath>
      <pathelement location="gen" />
      <path refid="main.compile.path"/>
    </classpath>
</javac>

如果文件的路径与类.class的声明不匹配,package那么您必须将其移动到与包结构匹配的临时目录中然后将该目录添加到类路径中。

于 2013-07-19T13:48:35.767 回答
5

建立一个引用您的类文件的路径:

<path id="javac.classpath">
     <pathelement location="./gen/stragglers/SomePOJO.class"/>
</path>

然后在您的 javac 任务中使用它:

<javac srcdir="./src/main/java" destdir="./gen/bin/main">
    <classpath refid="javac.classpath"/>
</javac>
于 2013-07-19T13:46:15.487 回答