# Jdk von CruiseControl & Ant



## H-Vollmilch (15. Mai 2009)

Hallo,

Ich bin gerade dabei einen Build aufzusetzen und benutze dafür CC in verbindung mit ANT, ANT4Eclipse, Eclipse usw. Das ganze läuft bisher eigentlich ganz gut, es gibt nur einen Knackpunkt der noch behoben werden müsste, dazu aber gleich mehr. 

Der Ablauf sieht momentan so aus das der komplette Build in einem Eclipse workspace stattfindet (die Umgebung in der wir hier entwickeln. Eclipse wird nicht gestartet, der Build findet nur im workspaceordner statt. Die Umgebung wird fürs Deployen, Serverstarten und Solutionserzeugen benötigt). 
Dieser wird für jeden Build neu aufgesetzt, d.h. der alte gelöscht und alles wieder schön, mit dem neusten Stand zusammenkopiert. Danach gehts ganz normal weiter mit Compilieren, Tests...wie mans halt kennt. 

So nun zum Problem:
Wenn man CC über seine .bat datei startet muss man ja gleich zu beginn den JAVA_HOME Pfad setzen und wie es aussieht wird dieses jdk für den ganzen Build benutzt. Stimmt das? Zumindest sagen das die autom. erstellten Properties der Testcases...

Um die Umgebung aber wirklich auf Herz und Nieren testen zu können wäre es besser deren jdk zu verwenden. Dies kann ich CC jedoch nicht zuweisen da es sich im ANT Build ja nicht selber löschen kann. 

Eine möglichkeit wäre natürlich vor dem setzen von JAVA_HOME eine cmd auszuführen die alles schön löscht und hinkopiert... Gäbe es auch einen andere Möglichkeit? einen Parameter von CC beim ANT aufruf etc?

Hier noch ein paar Smileys damits nicht so langweilig aussieht:
:bahnhof::applaus::bae::rtfm:???:L
Danke und Gruß

Denis


----------



## maki (15. Mai 2009)

> Wenn man CC über seine .bat datei startet muss man ja gleich zu beginn den JAVA_HOME Pfad setzen und wie es aussieht wird dieses jdk für den ganzen Build benutzt. Stimmt das?


Ziemlich sicher ja.

Wobei CC kein JDK (oder genauer: JAVA_HOME) braucht, ist nur für Javaprojekte wichtig. kannst ja mal versuchen die Umgebungsvariable dynmisch vor den Jobs zu setzen.

Nebenbei gefragt, du/ihr startet denn CC aber nicht vor jedem Build manuell, oder?



> Um die Umgebung aber wirklich auf Herz und Nieren testen zu können wäre es besser deren jdk zu verwenden. Dies kann ich CC jedoch nicht zuweisen da es sich im ANT Build ja nicht selber löschen kann.


Am besten eine eigene Umgebung einrichten, virtualisierte Maschinen eignen sich gut für so etwas.
Ansonsten muss ja nicht ein ANT Skript den Build löschen, kann ja auch eine .bat sein.

Irgendwie kommt mir das alles etwas umständlich vor 

Nachtrag: Anscheinend braucht CC doch ein JDK, laut google löst man dein problem in dem man verschiedene "Launcher" batch/shell skripte für ant schreibt und aufruft, eines für jedes JDK.


----------



## H-Vollmilch (15. Mai 2009)

Hey,

danke für die schnelle Antwort!



> Nebenbei gefragt, du/ihr startet denn CC aber nicht vor jedem Build manuell, oder?



Momentan ja, da ich mich noch in der Testphase befinde. Später wird es als Dienst eingerichtet.



> Irgendwie kommt mir das alles etwas umständlich vor



So umständlich ists gar nicht, bin nur schlecht im Erklären 



> Nachtrag: Anscheinend braucht CC doch ein JDK, laut google löst man dein problem in dem man verschiedene "Launcher" batch/shell skripte für ant schreibt und aufruft, eines für jedes JDK.



das wirds wahrsch. sein, hast du mir einen link dazu?

Danke


----------



## maki (15. Mai 2009)

> Momentan ja, da ich mich noch in der Testphase befinde. Später wird es als Dienst eingerichtet.


Naja, einen automatischen Build manuell anzustossen ist nicht so Sinn der Sache.



> So umständlich ists gar nicht, bin nur schlecht im Erklären


Nene, erklärt ist es gut, aber das vorgehen erinnert mich stark an "von hinten durch die brust ins Auge", für Hudson zB. gibt es ein Plugin das Eclipse Projekte bauen kann, mit Maven2 kann man auhc viel machen, aber die Kombo ANT/ant4eclipse/CC ist etwas umständlich imho.



> das wirds wahrsch. sein, hast du mir einen link dazu?


Grad den Tab wieder geschlossen, stand aber nicht wirklich viel drinnen.
Worum es geht ist folgendes: Kopien von ant.bat machen und in den Kopien dann ein anderes JAVA_HOME setzen, die kopien zB. antJDK1.4, antJDK1.6 nennen und dann anstatt ant eben antJDK1.4 aufrufen.

Mit Hudson zB. kann man auch Kaskaden von Build einrichten, auch auf anderen Build Servern, ist auch sehr einfach zu konfigurieren, persönlich halte ich CC für Javaprojekte für sehr umständlich.


----------



## H-Vollmilch (15. Mai 2009)

> Naja, einen automatischen Build manuell anzustossen ist nicht so Sinn der Sache.


Wie gesagt wenn er läuft wird er zum Dienst



> Mit Hudson zB. kann man auch


War schon in nem Vortrag zu Buildsystemen und Hudsen war schon ziemlich cool, allerdings wird eine andere Produktlandschaft von uns schon mit cc gebuildet und ich passe den Rest an...




> Grad den Tab wieder geschlossen, stand aber nicht wirklich viel drinnen.
> Worum es geht ist folgendes: Kopien von ant.bat machen und in den Kopien dann ein anderes JAVA_HOME setzen, die kopien zB. antJDK1.4, antJDK1.6 nennen und dann anstatt ant eben antJDK1.4 aufrufen.



Danke für den Vorschlag, allerdings krachts bei mir ständig sobald ich 

<ant antscript="tools/ant/ant/ant.bat"
statt
<ant anthome="tools/ant

setze. Leider habe ich auch keinen Stacktrace, da alles so schnell geht das er die log.xml nicht erstellen kann (manuell bringt auch nichts) und das das einzigste ist an dem er meckert...

Hast du ne Ahnung warum? Wenn ich anthome setze ruft er auch nur die bat auf. 

Gruß


----------



## maki (15. Mai 2009)

Sollte das nicht
[xml]<ant antscript="${dir.javatools}\ant\bin\ant.bat   [/xml]
bzw.
[xml]<ant antscript="${dir.javatools}\ant\bin\antJDK1.4.bat   [/xml]
heissen?


----------



## H-Vollmilch (15. Mai 2009)

Eine absolute Pfadzuweisung hatte auch keinen Erfolg 

aber ich Probiers am Montag nochmal und melde mich dann...

Danke soweit, schönes We


----------



## Wildcard (15. Mai 2009)

maki hat gesagt.:


> Nene, erklärt ist es gut, aber das vorgehen erinnert mich stark an "von hinten durch die brust ins Auge", für Hudson zB. gibt es ein Plugin das Eclipse Projekte bauen kann


Und ich hab noch eins geschrieben um mit Eclipse Buckminster zu bauen. Hudson ist schon toll :toll:


----------

