alle .java-Dateien via Shellscript-Aufruf compilieren - aber jede nur einmal - wie?

glhlg

Mitglied
Guten Morgen,

und erst mal ein großes Hallo! :) Mein erster Post!

Ich habe hier ein Script vorgesetzt bekommen, das ein SVN-Projekt auscheckt und compiliert.
Das Ganze funktioniert auch. Aber eines läuft sehr ungünstig!
Das Script geht in einer Schleife alle .java-Dateien durch und compiliert die Datei und alle Anhängigkeiten. Und das aus jeder Datei heraus. So werden nun viele Dateien mehrfach compiliert.
Ich habe nun die ehrenhafte Aufgabe das zu verbessern :)
Hier mal ein Code-Auszug:
Code:
	find $PFAD/WEB-INF/src -name '*.java' | while read dir;
	do 
	 if [ -s $dir ]
	 then
	    echo "Datei $dir wird verarbeitet" >> $loginhalt
	    /usr/java/jdk1.6.0_03/bin/javac -verbose -deprecation -target 1.6 -g -Xstdout $loginhalt2 -source 1.6 -d $PFAD/WEB-INF/classes -sourcepath $PFAD/WEB-INF/src -classpath $PFAD/WEB-INF/lib/*:/etc/tomcat/lib/* -encoding UTF-8 $dir
	 else
	   	echo "Datei $dir ist leer" >> $loginhalt
	 fi
	done
Ich hatte daran gedacht, evtl. mit einem zusätzlichen if abzufragen, ob es die Datei bereits als .class-Datei gibt und nur falls nicht, den javac-Befehl aufzurufen.

Gibt es eine schönere Lösung?


Danke für eure Hilfe! :)
Gruß
Gerrit
 
Hmm nur einmal kompilieren fällt mir so auch nichts anderes ein. Aber alles kompilieren geht mit:
Code:
find src | grep .java > sources.txt
javac -cp $CLASSPATH -d bin @sources.txt
 
Guten Morgen :)

Hmm nur einmal kompilieren fällt mir so auch nichts anderes ein. Aber alles kompilieren geht mit:
Code:
find src | grep .java > sources.txt
javac -cp $CLASSPATH -d bin @sources.txt
Aber in diesem Fall würden auch aus allen Javadateien alle Verweise kompiliert und das ggf. auch mehrmals, oder?



Hallo,

für diesen Zweck gibt es make oder im Java-Umfeld eher verbreitet Ant.
Ja, ... das sehe ich auch so. Aber vor langer langer Zeit hat mal jemand für leichter befunden, es mit Shellscripten zu versuchen (hier wird nie ein Standard benutzt und ich versuche da derzeit gegen an zu kämpfen :p).


Wie würde ich vom Prinzip her mit Ant vorgehen?
  1. Ant auf dem Linux-Server installieren, dort aus dem SVN auschecken und dann das Projekt builden lassen,
  2. oder auf das Projekt auf dem Entwicklungsrechner erstellen, aus Eclipse heraus und das WAR-File dann auf den Server packen?


Gruß
Gerrit
 

Neue Beiträge

Zurück