Рассмотрим следующую схему проекта (при условии, что A и B зависят друг от друга):
.
|-- bin1
|-- bin2
|-- src1
| `-- A.java
`-- src2
`-- B.java
После компиляции я хочу, чтобы классы находились в соответствующих папках, например:
.
|-- bin1
| `-- A.class
|-- bin2
| `-- B.class
|-- src1
| `-- A.java
`-- src2
`-- B.java
Это довольно просто из командной строки:
$ javac -implicit:none -sourcepath src1:src2 -d bin1 src1/*
$ javac -implicit:none -sourcepath src1:src2 -d bin2 src2/*
Eclipse также делает это таким образом, если это настроено.Но я не могу понять, как это сделать с помощью Ant.
Приложение: Мои текущие javac
задачи:
<javac destdir="${classes.1.dir}">
<src path="${src.1.dir}" />
<src path="${src.2.dir}" />
</javac>
<javac destdir="${classes.2.dir}">
<classpath path="${classes.1.dir}" />
<src path="${src.2.dir}" />
</javac>
Обратите внимание на циклическую зависимость.Задача second работает хорошо, она компилирует только то, что в src2
, так как имеет зависимость classpath
от другой сборки.Задача first , однако, не может занять classpath
, поскольку ничего еще не скомпилировано, а с src
она, конечно, компилируется слишком много.