Considérese la siguiente distribución de proyectos (suponiendo que A y B dependen unos de otros):carpetas múltiple Fuente: Evitar la compilación implícita con Ant
.
|-- bin1
|-- bin2
|-- src1
| `-- A.java
`-- src2
`-- B.java
Después de la compilación, que quieren las clases a residir en sus respectivas carpetas os guste este :
.
|-- bin1
| `-- A.class
|-- bin2
| `-- B.class
|-- src1
| `-- A.java
`-- src2
`-- B.java
Esto es bastante sencillo desde la línea de comandos:
$ javac -implicit:none -sourcepath src1:src2 -d bin1 src1/*
$ javac -implicit:none -sourcepath src1:src2 -d bin2 src2/*
Eclipse también lo hace de esa manera si así se configura. Pero no puedo entender cómo hacerlo con Ant.
Apéndice: Mis actuales javac
tareas:
<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>
Nota de la dependencia circular. La segunda tarea funciona bien, solo compila lo que está en src2
ya que tiene una dependencia classpath
en la otra compilación. La primera tarea , sin embargo, no puede tomar un classpath
, ya que aún no se ha compilado nada, y con src
, por supuesto, compila demasiado.
Puede combinar las dos primeras tareas 'javac'. Aparte de eso, esta solución parece ser lo más limpia posible. La compilación tiende a ser la parte más pequeña de mi ejecución Ant (las pruebas unitarias tardan mucho más), por lo que la compilación doble parece bastante aceptable. –