In genere è possibile trovare sul sistema (se si è Unix) in cui il comando ant
reale è in esecuzione tramite which ant
o type ant
. Se si guarda in quella posizione, di solito si nota che si tratta di un collegamento al comando effettivo nella directory $ANT_HOME
.
Dai un'occhiata a questo script. Gran parte di questo è solo cercare di determinare esattamente dove risiedono $ANT_HOME
e $JAVA_HOME
se questi non sono impostati di default nell'ambiente.
Quello che non si vede nello script shell è ant
:
EXPORT JAVA_HOME
Così, anche se $JAVA_HOME
si trova all'interno della sceneggiatura ant
, non è mai esportato nell'ambiente (a meno che qualcuno ha modificato il ant
script di shell . If an environment variable is not exported, it is unavailable to child processes -- like the
java processo child process running your
ant`.
Quindi, se siete su una macchina in cui $JAVA_HOME
non è impostato prima ant
viene eseguito, non sarà disponibile nel vostro script di build.
Tuttavia, sia Ant che Java (poiché Ant è un processo Java) impostano un gran numero di proprietà predefinite che è possibile utilizzare. Quando Ant lo esegue, imposta è own built in properties che include cose come ${ant.home}
. E, quando Java viene eseguito, Java imposta anche un elenco completo di Java Properties come ${java.home}
.
Quindi, se è davvero necessario sapere dove si trova la directory JAVA_HOME, utilizzare la proprietà ${java.home}
e non dipendere dalla variabile di ambiente $JAVA_HOME
.
Se vuoi per ottenere una lista di queste proprietà, eseguire il seguente file Ant:
<project>
<echoproperties/>
</project>
fonte
2013-07-10 14:05:45
Se JAVA_HOME non è impostato, allora come è stato possibile per il progetto da costruire? (È un progetto Java) –
Ant non richiede di impostare 'JAVA_HOME' (come potresti aver capito perché sei stato in grado di eseguire il tuo file di build anche su macchine in cui' JAVA_HOME' non era impostato) –
Ok questo ha senso ora . Grazie –