Wir haben mehrere Produkte, die viel geteilten Code haben und die mehrere Versionen beibehalten müssen.Die beste Möglichkeit, Eclipse-Projekte mit Ant in Hudson oder einem anderen CI-Tool automatisch auszuprobieren und zu kompilieren?
Um dies zu handhaben, verwenden wir viele Eclipse-Projekte, einige enthalten Bibliotheks-Jars, und einige enthalten geteilten Quellcode (in mehreren Projekten, um einen riesigen Haufen mit zahlreichen Abhängigkeiten zu bekommen, während alles von Grund auf neu kompiliert werden kann Quelle und Binärdateien sind konsistent). Wir verwalten diese mit projectSet.psf, da diese alle Projekte direkt aus CVS herausziehen und einen vollständig vorbereiteten Arbeitsbereich hinterlassen können. Wir machen keine Ameisen-Builds direkt oder benutzen Maven.
Wir wollen nun in der Lage sein, alle diese Projekte und ihre verschiedenen Versionen in ein Continous Integration Tool zu integrieren - ich mag Hudson, aber das ist nur eine Frage des Geschmacks - was im Wesentlichen bedeutet, dass wir einen automatischen Weg zur Überprüfung bekommen müssen die Projekte in einen neuen Arbeitsbereich auslagern und die Quellordner wie in den Projektdateien in jedem Projekt beschrieben kompilieren. Hudson bietet keinen solchen Ansatz, um ein Projekt zu bauen, also habe ich darüber nachgedacht, wie der beste Weg dazu aussehen könnte.
Ideen haben
- Suche gewesen oder eine Ameise Plugin/Konverter schreiben, die projectSet.psf der und Karte zu cvs-Kasse versteht und Tags kompilieren.
- Erstellen Sie die build.xml-Dateien in Eclipse und verwenden Sie diese. Ich habe das ausprobiert und festgestellt, dass das Ergebnis sehr ausführlich und mit absoluten Orten ist, was mit automatischen Tools nicht gut ist, die Dateien dorthin bringen, wo sie wollen.
- Schreiben Sie ein Hudson-Plugin, das projectSet.psf versteht, um eine Konfiguration abzuleiten und sie zu erstellen.
- nur den sauren Apfel beißen und manuell erstellen und die CI-Konfiguration aktualisieren, wenn Sachen Pausen - ich diese Erfahrungen über andere Völker nicht wie :)
ich wirklich möchte ich entscheiden kann, so hören, wie man Nähern Sie sich diesem.
Edit: Eine weitere Option könnte einen CI verwenden, die besser über Eclipse-Projekte kennen und/oder Projekt Sets. Wir sind nicht religiös - es geht nur darum, Dinge in Gang zu bringen, ohne alles selber machen zu müssen. Wäre Cruise Control vielleicht eine bessere Option? Andere?
Bearbeiten: Gefunden, dass ant4eclipse eine "Team Project Set" -Funktion hat. http://ant4eclipse.sourceforge.net/
Edit: Verwendet, um den ant4eclipse und ant-contrib ant Erweiterungen einen kompletten Arbeitsbereich als sjgned runnable jar-Datei ähnlich die Runnable Jar Anlage in Eclipse 3.5M6 zu bauen. Ich bin immer noch abhängig von Eclipse, um den ersten leeren Arbeitsbereich zu erstellen und das ProjectSet zu extrahieren, das ist die nächste Hürde.
Edit: mit einer Doppelkonfiguration Ended, nämlich, dass Hudson extrahiert den gleichen Satz von Modulen, wie sie in der ProjectSet.pdf Datei aus dem CVS aufgeführt (die den gleichen Tag haben muss), was sie nächstes lokalisiert werden zueinander. Dann funktioniert ant4eclipse gut mit der im Hauptmodul eingebetteten Datei projectSet.psf. Vorbehalt: Die Modulliste in Hudson muss manuell aktualisiert werden, und es scheint, dass anschließend eine manuelle Bereinigung des Arbeitsbereichs erforderlich ist, damit Hudson "erkennt", dass es jetzt mehr Projekte als früher gibt.Das hat jetzt für ein paar Monate gut für uns funktioniert, aber es war ziemlich mühsam, alles in der Ameisenfeile arbeiten zu lassen.
Edit: Die "Use Team Projekte" mit ant4eclipse und Strg-A, Ctrl-C in Project Panel mit Ctrl-V in den CVS-Projekte in Hudson hat für uns gut genug, um zu arbeiten, stellte sich heraus, leben mit (für reife Projekte wird dies sehr selten geändert). Ich erwarte die Veröffentlichung von ant4eclipse 1.0 - http://www.ant4eclipse.org/, derzeit in Meilenstein 2 - um zu sehen, wie viel Eigenbau-Funktionalität durch ant4eclipse-Dinge ersetzt werden kann.
Edit: ant4eclipse ist ab 20100609 in M4 so der Zeitplan bei http://www.ant4eclipse.org/node?page=1 ist etwas rutschig.
Edit: Mein Fazit für einen längeren Zeitraum unseres ant4eclipse Ansatzes nach der Verwendung ist, dass der Build-Skript sehr knorrigen erhalten und ist schwer zu pflegen. Auch die Team ProjectSet-Funktion (mit der ant4eclipse die Projekte lokalisieren kann) funktioniert gut für CVS-basierte Repositories, aber nicht nachdem wir zu git migriert sind (was eine große Sache für sich ist). Neue Projekte werden höchstwahrscheinlich auf Maven basieren, da dies in Jenkins gute Unterstützung findet.
Hinweis: Ich habe jetzt eine Ameisen-Datei mit ant4eclipse erstellt, um "ausführbare JAR-Dateien" zu generieren, was sehr mühsam war, aber das langfristige Ziel ist es, Hudson über Eclipse-Projekte zu unterrichten. –