2009-04-16 12 views
2

Ich führe JUnit nächtliche Builds auf meinem Computer als geplante Aufgabe in Windows XP. Meine Anwendung verwendet Jaxb, daher müssen einige der Tests xsd-Schemas mithilfe des Systemklassenpfads referenzieren. Wenn die Nightly Build läuft, während ich auf dem Computer nicht bin, erhalte ich einen Fehler wie folgt aus:Running Nightly Builds als geplante XP-Aufgabe - Classpath Problem

java.lang.Exception: Kann Schema Myschema.xsd von Classpath

jedoch laden, Wenn ich den Build manuell ausführe, erhalte ich keinen solchen Fehler. Die Umgebungsvariable für den Speicherort meiner Schemas ist eine Variable System, keine Benutzervariable, also weiß ich nicht, was diesen Fehler verursachen könnte. Was könnte an diesem Fehler liegen?

EDIT: Alternativen wie Hudson ist nicht das, was ich verlange. Ich frage nach einer Lösung für die oben beschriebene Technologie (Batch-Datei läuft als eine geplante Aufgabe).

Antwort

1

Mein Verdacht ist, dass Ihr Arbeitsverzeichnis unterscheidet sich von dem, was Sie erwarten (und nicht speziell die Classpath-Variable). Es ist nicht sofort offensichtlich, wenn Sie diese geplante Aufgabe als Benutzer oder Systemaufgabe ausführen. In jedem Fall lohnt es sich herauszufinden, wo genau die Aufgabe ausgeführt wird.

Das heißt, während ich automatische Builds mit Windows XP geplant Aufgaben (genau wie Sie jetzt tun), verwenden wir derzeit CruiseControl. In der Zusammenfassung ist das nicht viel anders als das, was Sie tun (regelmäßig ein Build ausführen), aber es increases your flexibility. Hier ist es die wertvollste Fähigkeit von CruiseControl, zu erkennen, dass Änderungen festgeschrieben wurden, und nur den Build und dann auszuführen. Wir erfahren innerhalb von 10 Minuten nach einem Commit von kaputten Builds, defekten Unit Tests, etc.

1

Sie sollten Hudson oder Cruise Control auschecken. Beide sind einfach einzurichten und kümmern sich um diese Art von Problemen mit mehr Reporting, Kontrolle und verbesserter Benutzerfreundlichkeit. Sie werden weniger Zeit mit der Untersuchung von Build-Problemen verbringen.

+0

haskell? Ja wirklich? meinst du "hudson"? – dfa

+0

Ups! Der Link war richtig, aber mein Text war falsch. :) –

1

hudson ist eine weitere kontinuierliche Integration-Engine, dass die Einrichtung sehr sehr einfach:

Hudson offers the following features:

  • Einfache Installation: Just java -jar hudson.war, oder stellen Sie sie in einem Servlet Container. Keine zusätzliche Installation, keine Datenbank.
  • Einfache Konfiguration: Hudson kann vollständig von seiner freundlichen Web-GUI mit umfangreichen on-the-fly Fehlerprüfungen und Inline-Hilfe konfiguriert werden. Es gibt keine Notwendigkeit, XML manuell zwicken, obwohl, wenn Sie tun möchten, so können Sie das auch tun.
  • Change-Set-Unterstützung: Hudson kann eine Liste der Änderungen in erstellt die Erstellung von CVS/Subversion/Mercurial. Diese ist auch in einem ziemlich effizienten Mode gemacht, um die Last des Repository zu reduzieren.
  • Permanent Links: Hudson Ihnen sauber lesbare URLs für die meisten seine Seiten gibt, darunter auch einige permalinks Link „neuesten Build“/„letzte erfolgreiche Build“, so dass sie leicht verknüpfen aus anderen Ländern sein.
  • RSS/E-Mail/IM-Integration: Monitor Build-Ergebnisse per RSS oder E-Mail zu bekommen Echtzeit-Benachrichtigungen auf Fehler.
  • After-the-fact-Tagging: kann Builds werden lange nach getaggt Builds sind abgeschlossen JUnit/TestNG Test Berichterstattung: JUnit-Test-Berichte können tabellarisch zusammengefasst sein und angezeigt mit Verlaufsinformationen, wie , wenn es begann zu brechen, etc. Verlaufsverlauf ist in einem Diagramm aufgetragen.
  • Distributed Builds: Hudson kann vertreiben Build/Test Lasten zu mehrere Computer. Auf diese Weise erhalten Sie das Maximum aus diesen Leerlauf Workstations, die unter Entwicklerpulte sitzen. Datei Fingerprinting: Hudson kann verfolgen von denen Build produziert, die Gläser, und welche Build verwendet, welche Version von Gläsern, und so weiter. Diese funktioniert sogar für Gläser, die außerhalb Hudson hergestellt werden, und ist ideal für Projekte, Abhängigkeiten zu verfolgen.
  • Plugin-Unterstützung: Hudson kann über Drittanbieter-Plugins erweitert werden. Sie können Plugins schreiben, um Hudson Support-Tools/Prozesse zu machen, die Ihr Team verwendet.