Ho un file di build Ant per una libreria Java. Sembra qualcosa di simile:Come cambio la directory di destinazione del comando set di file di Ant?
<project ... ><target ... >
<jar destfile="C:\path\to\export.jar">
<manifest> ... </manifest>
<fileset dir="C:\path\to\bin" />
<fileset dir="C:\path\to\src" />
<fileset dir="C:\path\to\doc" />
<zipfileset src="C:\path\to\included\library.jar" />
</jar>
</target></project>
L'unico problema è che il mio JavaDoc viene esportata direttamente nella directory principale del file jar risultante. Essentialy, mi piacerebbe qualche equivalente del comando <copydir>
che può essere utilizzato all'interno del comando <jar>
.
mia struttura desiderata è questo:
export.jar
META-INF
Manifest.MF
com
example
whatever
Blah.class
Blah.java
org
external
somelibrary
Magic.class // contents of the included library jar file
doc
// javadoc files here
L'attuale struttura è:
export.jar
META-INF
Manifest.MF
com
example
whatever
Blah.class
Blah.java
// some javadoc files here
org
external
somelibrary
Magic.class // contents of the included library jar file
// more javadoc files here
mia "soluzione" attuale è quella di omettere il comando documentazione <fileset>
, poi, una volta che il vaso ha esportato, andare in Windows Explorer e tasto destro del mouse → 7-Zip → Apri archivio; Posso quindi lasciare la directory doc
lì bene. Tuttavia, questo completamente sconfigge lo scopo di Ant come un sistema di compilazione completamente automatizzato.
Se è importante, questo file è stato originariamente generato da Eclipse con l'esportatore JAR eseguibile. Tuttavia, ovviamente ho bisogno di modificarlo per aggiungere file sorgente, ecc. Perché è una libreria e non è in realtà un jar eseguibile. L'ho esportato come un contenitore eseguibile per fare in modo che Eclipse impacchettasse nelle librerie richieste; a quanto pare le librerie sul percorso di generazione non sono disponibili per l'esportazione tramite lo standard File → Export → file JAR.
Sono consapevole del fatto che un barattolo utilizza la compressione zip. Tuttavia, la mia cartella 'doc' non è un file zip, solo una cartella. secondo Eclipse, non esiste un prefisso 'attributo 'nel comando' fileset'. – wchargin
'zipfileset' può essere utilizzato in due modi. Uno come set di file all'interno di un file zip. Uno come un set di file da includere in un file zip (o un jar, questo è lo stesso). L'ultimo è per il tuo caso d'uso. Leggi le prime righe del documento che ho indicato nella mia risposta. –
Grazie! Se non ti dispiace, modificherò la tua risposta per includere un esempio di codice. – wchargin