Nì (sì e noOriginariamente inviato da Iwk_Batterio
Ma se do da compilare un file .java non mi compila anche tutti gli altri file di cui ha bisogno?)
La questione è questa: quando 'javac' compila un sorgente e scopre che c'è bisogno di altri "tipi" (detto in generale) referenziati e non presenti in quel sorgente, allora va alla ricerca. Può trovare il .class e/o il sorgente. Il comportamento di default (che si può cambiare con una opzione) fa scegliere quello più recente tra i due, se presenti entrambi. Quindi se il sorgente è più recente del .class, lo compila.
Questo però vorrebbe dire che tu dovresti sapere che c'è una (o più) classe principale che dipende da tutte le altre classi. Allora basterebbe compilare questo sorgente principale e javac scopre e compila tutto ciò che gli serve.
Ma questo ovviamente non sempre è vero ... dipende dal tuo progetto. Ci possono essere dei casi in cui javac non saprebbe trovare il sorgente da compilare. Vuoi un esempio??
Prova.java
Test.javacodice:public class Prova { private Altro a; }
In questo scenario, Prova ha bisogno di Altro (che è solo visibile in quel package ed è definito dentro Test.java, quindi supponiamo che magari serve solo a Prova e basta). Prova non ha bisogno di Test, perché magari è una classe che serve ad altre classi.codice:public class Test { ..... } class Altro { ..... }
Se compili solo Prova.java, javac non è in grado di "capire" che deve compilare il sorgente Test.java!!!
Insomma, hai già capito: javac non è così "furbo"! Dovresti "saperlo" tu.
Con Ant ripeto che lo fai, e anche bene! Con i batch pure potresti farlo ma: a) non gestisci le dipendenze (ri)compila sempre tutto quanto! e b) Non sono "portabili". Una cosa è scrivere un .bat su Windows e un'altra è scrivere uno script per una shell es. la Bash su Linux. E quindi il tuo "indipendentemente dal computer" sarebbe da prendere con le pinze .... se uno vuole compilare il tuo programma Java su un S.O. Linux??Originariamente inviato da Iwk_Batterio
come faccio a creare un eseguibile .bat che compili il mio programma indipendentemente dal computer e dalla posizione fisica in cui si trova?
Ant è portabile.
Ma il JDK deve comunque averlo, come minimo, innanzitutto!! E a quel punto scaricare lo zip di Ant, unzipparlo e settare quelle poche variabili di ambiente che servono ... come dicono gli americani, è una "brezza", una cosa facile, semplice.Originariamente inviato da Iwk_Batterio
(il computer di chi compilerà il programma non deve aver bisogno dell'installazione di nessun software)
E tra l'altro ci sono centinaia di software opensource che per il build si basano su Ant. Mica ti danno un batch!!

)
Rispondi quotando