Ant:将一个编译的类文件添加到javac类路径?

时间:2013-07-19 13:41:29

标签: java ant classpath javac

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

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

如果没有,为什么?如果是这样,怎么样?提前谢谢!

2 个答案:

答案 0 :(得分:4)

构建引用类文件的路径:

<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>

答案 1 :(得分:4)

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

例如,如果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声明不匹配,那么您必须将其移动到 匹配的临时目录中包结构,然后将该目录添加到类路径中。