Рассмотрим следующий макет проекта (предполагая, что A и B зависят от каждого other):
.
|-- 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>
Обратите внимание на циклическую зависимость. Вторая задача работает хорошо, она компилирует только то, что находится в src2
, поскольку имеет зависимость classpath
от другой сборки. Однако первая задача не может принимать путь к классам
, так как ничего еще не скомпилировано, а с src
, конечно, компилируется слишком много.