Sollte ich Projektdateien wie Eclipse's .project, .classpath, .settings unter Versionskontrolle halten (z. B. Subversion, GitHub, CVS, Mercurial usw.)?
java
eclipse
version-control
ide
Cretzel
quelle
quelle
Antworten:
Sie wollen in der Versionskontrolle halten alle tragbaren Einstellungsdateien , das
heißt:
Jede Datei , die in ihm keinen absoluten Pfad hat.
Das beinhaltet:
Faustregel für mich:
Sie müssen in der Lage sein, ein Projekt in einen Arbeitsbereich zu laden und alles darin zu haben, was Sie benötigen, um es ordnungsgemäß in Ihrer IDE einzurichten und in wenigen Minuten loszulegen.
Keine zusätzliche Dokumentation, Wiki-Seiten zum Lesen oder was nicht.
Laden Sie es auf, richten Sie es ein, gehen Sie.
quelle
.project- und .classpath-Dateien yes. Wir behalten unsere IDE-Einstellungen jedoch nicht in der Versionskontrolle. Es gibt einige Plugins, die die Einstellungen nicht gut beibehalten, und wir haben festgestellt, dass einige Einstellungen von einem Entwicklungscomputer zum nächsten nicht sehr portabel waren. Wir haben stattdessen eine Wiki-Seite, auf der die Schritte aufgeführt sind, die ein Entwickler zum Einrichten seiner IDE benötigt.
quelle
Dies sind meiner Meinung nach generierte Dateien, und als solche stelle ich sie niemals unter Versionskontrolle. Sie können von Maschine zu Maschine und von Entwickler zu Entwickler unterschiedlich sein, beispielsweise wenn Benutzer verschiedene Eclipse-Plugins installiert haben.
Stattdessen verwende ich ein Build-Tool (Maven), das beim Auschecken erste Versionen dieser Dateien generieren kann.
quelle
Ich bin hier zwischen zwei Optionen hin und her gerissen.
Einerseits denke ich, dass jeder die Möglichkeit haben sollte, die Entwicklungswerkzeuge zu verwenden, mit denen er am produktivsten ist, solange alle Quellartefakte in der Versionskontrolle gespeichert sind und das Build-Skript (z. B. ANT oder Maven) die Einhaltung der Standards durch gewährleistet Festlegen, welches JDK genau verwendet werden soll, von welchen Versionen der Bibliotheken von Drittanbietern abhängig sein soll, Ausführen von Stilprüfungen (z. B. Prüfstil) und Ausführen von Komponententests usw.
Andererseits denke ich, dass so viele Leute dieselben Tools verwenden (z. B. Eclipse) und es oft viel besser ist, einige Dinge zur Entwurfszeit zu standardisieren, anstatt sie zu erstellen - zum Beispiel ist Checkstyle als Eclipse-Plugin weitaus nützlicher als als eine ANT- oder Maven-Aufgabe - es ist besser, die Entwicklungswerkzeuge und die allgemeinen Plugins zu standardisieren.
Ich habe an einem Projekt gearbeitet, bei dem jeder genau das gleiche JDK, die gleiche Version von Maven, die gleiche Version von Eclipse, den gleichen Satz von Eclipse-Plugins und die gleichen Konfigurationsdateien (z. B. Checkstyle-Profile, Code-Formatierungsregeln usw.) verwendet hat. Alle diese wurden in der Quellcodeverwaltung gespeichert - .project, .classpath und alles im Ordner .settings. Es machte das Leben in den Anfangsphasen des Projekts sehr einfach, als die Leute ständig die Abhängigkeiten oder den Erstellungsprozess optimierten. Es hat auch sehr geholfen, wenn dem Projekt neue Starter hinzugefügt wurden.
Alles in allem denke ich, dass Sie, wenn es nicht zu viele Chancen für einen Religionskrieg gibt, die grundlegenden Entwicklungswerkzeuge und Plugins standardisieren und die Versionskonformität in Ihren Build-Skripten sicherstellen sollten (z. B. durch explizite Angabe der Java-Version) .I Denken Sie nicht, dass das Speichern des JDK und der Eclipse-Installation in der Quellcodeverwaltung von großem Vorteil ist. Alles andere, was kein abgeleitetes Artefakt ist - einschließlich Ihrer Projektdateien, Konfigurations- und Plugin-Einstellungen (insbesondere Code-Formatierer und Stilregeln) - sollte in die Quellcodeverwaltung eingehen.
PS Wenn Sie Maven verwenden, gibt es ein Argument dafür, dass die Dateien .project und .classpath abgeleitete Artefakte sind. Dies gilt nur, wenn Sie sie jedes Mal generieren, wenn Sie einen Build erstellen, und wenn Sie sie nach dem Generieren aus dem POM noch nie von Hand anpassen mussten (oder sie versehentlich durch Ändern einiger Einstellungen geändert haben)
quelle
Nein, da ich nur Versionskontrolldateien habe, die zum Erstellen der Software benötigt werden. Außerdem können einzelne Entwickler ihre eigenen projektspezifischen Einstellungen haben.
quelle
Nein, ich bin ein starker Maven- Benutzer und verwende das Q for Eclipse- Plugin, mit dem .project und .classpath erstellt und aktualisiert werden. Für andere Dinge wie Einstellungen für Plugins pflege ich normalerweise eine README- oder Wiki-Seite darüber.
Auch diejenigen, mit denen ich gearbeitet habe, bevorzugen andere IDEs. Verwenden Sie einfach die Maven-Plugins, um die Dateien zu generieren, die erforderlich sind, um ihre IDE (und sich selbst) zufrieden zu stellen.
quelle
Ich nehme an, dies ist alles eine Meinung - aber Best Practices im Laufe der Jahre zeigen, dass Dateien, die für eine bestimmte IDE spezifisch sind, nicht in der Quellcodeverwaltung gespeichert werden sollten, es sei denn, Ihre gesamte Organisation ist auf eine IDE standardisiert und Sie haben nie die Absicht, zu wechseln.
In beiden Fällen möchten Sie definitiv nicht, dass Benutzereinstellungen gespeichert werden - und .project kann Einstellungen enthalten, die wirklich entwicklerspezifisch sind.
Ich empfehle die Verwendung von Maven oder Ant als standardisiertes Build-System. Jeder Entwickler kann in wenigen Sekunden einen Klassenpfad in seiner IDE konfigurieren.
quelle
Ja, mit Ausnahme des Ordners .settings. Das Festschreiben der anderen Dateien funktioniert bei uns gut. Es gibt eine ähnliche Frage hier .
quelle
Obwohl ich im Allgemeinen dem Ansatz "Nicht versionierte Dateien generieren" zustimme, haben wir Probleme damit und müssen zurückwechseln.
Unser Kontext ist Eclipse + Maven mit dem m2eclipse-Plug-In. Wir haben eine gemeinsame Entwicklungsumgebung mit möglichst vielen gemeinsamen Verzeichnissen. Aber es kommt manchmal vor, dass jemand ein Plug-In ausprobiert, kleine Änderungen an der Konfiguration vornimmt oder einen zweiten Arbeitsbereich für einen anderen Zweig importiert ...
Unser Problem ist, dass die Generierung von .project beim Importieren eines Projekts in Eclipse erfolgt, später jedoch nicht in allen Fällen aktualisiert wird . Es ist traurig und wahrscheinlich nicht dauerhaft, da sich das m2eclipse-Plug-In verbessern wird, aber es ist jetzt wahr. Wir haben also unterschiedliche Konfigurationen. Was wir heute hatten, war das: Mehrere Naturen wurden zu vielen Projekten auf einer Maschine hinzugefügt, die sich dann sehr unterschiedlich verhielten :-(
Die einzige Lösung besteht darin, die .project-Datei zu versionieren (um Risiken zu vermeiden, machen wir dasselbe für .classpath und .settings). Auf diese Weise werden die lokalen Dateien mit m2eclipse aktualisiert, wenn ein Entwickler seinen POM ändert, alle werden zusammen festgeschrieben, und andere Entwickler sehen alle Änderungen.
Um Ihre Frage zu beantworten, sage ich ja, schreiben Sie diese Dateien fest.
Ich mochte auch:
quelle
Es scheint, dass sich diese Projektdateien im Laufe der Zeit ändern können, wenn Sie an einem Projekt arbeiten. Ja, ich stelle sie unter Versionskontrolle.
quelle
Ja. Alles andere als Ausgabe erstellen.
quelle
Wir verwenden IntelliJ IDEA und halten '.sample'-Versionen der Projekt- (.ipr) und Moduldateien (.iml) unter Versionskontrolle.
Etwas Größeres ist hier das Teilen und Wiederverwenden als die Versionierung, IMHO. Wenn Sie diese Konfigurationen jedoch gemeinsam nutzen möchten, gibt es keinen besseren Ort, um sie zu platzieren als das Repository direkt neben allem anderen.
Einige Vorteile von freigegebenen und versionierten Projektdateien:
Beachten Sie, dass diese Dateien in IDEA folgende Konfigurationen enthalten: Was sind die Verzeichnisse "Quelle" und "Testquelle"? alles über externe Abhängigkeiten (wo befinden sich Bibliotheksgläser sowie verwandte Quellen oder Javadocs); Build - Optionen, etc. Dies ist Sachen , die sich nicht vom Entwickler zu Entwickler variieren (ich nicht einverstanden dies sehr stark). IDEA speichert an anderer Stelle mehr persönliche IDE-Einstellungen sowie alle Plugin-Konfigurationen. (Ich kenne Eclipse nicht so gut; das kann ganz anders sein oder auch nicht.)
Ich stimme dieser Antwort zu , die besagt:
Und wir haben es dank versionierter Projektdateien so.
quelle