Frage

Ich arbeite an einem SWT-Projekt als Teil eines Teams. Wir brechen ständig jede andere Umgebung bauen, weil Eclipses .classpath Datei in die Versionskontrolle aktiviert ist und wir auch verschiedene SWT Bibliotheken für unsere Maschinen.

Je nachdem, wer begangen letzt, der .classpath Eintrag sein kann:

<classpathentry kind="lib" path="lib/swt/swt-win32.jar"/>

oder

<classpathentry kind="lib" path="lib/swt/swt-carbon.jar"/>

oder

<classpathentry kind="lib" path="lib/swt/swt-gtk.jar"/>

Es scheint, dass die Bibliotheken sich gegenseitig ausschließen, das heißt man sie nicht alle auf einmal enthalten und lassen SWT es funktioniert. Also müssen wir sie für jede Plattform filtern irgendwie ...

Hat jemand irgendwelche Ideen, wie dies zu tun? Meine ursprüngliche Idee war, diese in seine eigene „.classpath-swt“ Datei aufteilen (von der VCS ignoriert), automatisch generieren es mit Ant und schließen sie in dem Haupt .classpath, aber es scheint Eclipse-nicht unterstützt Aufspaltung des .classpath Datei.

Unsere aktuellen Work-around ist Begehung der .classpath zu vermeiden, es sei denn, wir tatsächlich die Abhängigkeiten geändert haben, aber dies bedeutet immer noch, dass eine Reihe von Menschen ihre Entwicklungsumgebungen jedes Mal beheben müssen die .classpath geändert wird.

wird Irgendwelche Vorschläge sehr geschätzt, solange es nicht ist „Eclipse-nicht verwenden“, da dies keine Option für dieses Projekt ist:)

War es hilfreich?

Lösung

Eclipse können Sie Classpath-Variablen definieren, so dass Sie die .classpath gleich halten kann, aber jeder Entwickler würde nach Plattform ihre Eclipse-Konfiguration. Sie könnten zumindest dann Version der .classpath Datei. Sie werden die Verzeichnisstruktur, wo Sie Ihre SWT Gläser zu etwas, wo das Glas Name pro Plattform ändert sich nicht ändern müssen. In diesem Menü finden Sie in: " Window-> Einstellungen-> Java-> Build Path "

SWTJARDIRECTORY/
    WIN32/
        SWT.JAR
    CARBON/
        SWT.JAR
    GTK/
        SWT.JAR

Bsp.

    SWT_PLATFORM="SWTJARDIRECTORY/GTK", set by developer in Eclipse

.classpath

    SWT_PLATFORM/SWT.JAR

Andere Tipps

Sie sollten diese Bibliotheken in einem separaten, leicht identifizierbaren Projekt statt in jedem Projekt gegeben.

z. erstellen Sie ein Projekt mit dem Namen "00-swt-Provider" (so geht es weiter oben) und lassen Sie es sich um ein "00-swt-Provider-Kohlenstoff" Referenz "00-swt-Provider-win32" oder „00-swt-Anbieter -GTK“.

Jede dieser exportiert die entsprechenden nativen Bibliotheken für die gegebene Plattform und die einzige Verbindung ist in 00-swt-Anbieter. Das eigentliche Projekt nur verweist dieses Meta-Projekt.

Wir verwenden eine Variante dieser intern - es funktioniert gut für uns

.

Wie wäre es einfach Ihre eigenen Instanzen und für diese eine Komponente Ihrer Umgebung konfigurieren Sie halten es nicht in die Quellcodeverwaltung?

Alternativ können Sie für jede Umgebung einer Classpath Datei speichern, vielleicht in einem anderen Verzeichnis und in einer Ameise Datei heißt build-Setup-Datei env.xml Sie einfach ein Ziel für jede Umgebung haben könnte, dass Kopien der richtigen über. Wie für eine Kopie davon in der Quellcodeverwaltung halten würden Sie sein müssen, dass es kopieren zurück, wenn es aktualisiert wird.

SWT tut dies, indem nicht Versionierung die .classpath Datei, sondern durch Versionen mehr separaten .classpath_ * Dateien mit dem Betriebssystem und Fenstersystem angehängt, z.B. .classpath_win32_win32. Wenn Sie also die Quellen aus dem Repository überprüfen Sie erwartet, dass die entsprechende Classpath Datei kopieren Projekt .classpath und neu kompilieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top