Wir hatten kürzlich ein Problem mit einem Eclipse-Projekt für eines unserer Teammitglieder. Tomcat stellte keine JARs der Anwendung bereit.
Wir haben schließlich festgestellt, dass die .classpath
Eclipse-Datei nicht mit der der Teammitglieder übereinstimmt, bei denen das Projekt in Ordnung war. Wir haben die .classpath
Datei durch eine Datei aus einem Projekt ersetzt, das in Ordnung war und die Tomcat-Bereitstellung war abgeschlossen.
Nur aus Neugier und um zu wissen, was in Zukunft zu sehen ist, wenn etwas nicht stimmt, was sich in den .classpath
und .project
Dateien befindet. Was kann ich da hinzufügen, was bedeutet das alles?
java
eclipse
configuration-files
eclipse-wtp
totale Finsternis
quelle
quelle
Antworten:
Eclipse ist eine Laufzeitumgebung für Plugins. Praktisch alles, was Sie in Eclipse sehen, ist das Ergebnis von Plugins, die auf Eclipse installiert sind, und nicht von Eclipse selbst.
Die
.project
Datei wird von der Eclipse-Kernplattform verwaltet. Ziel ist es, das Projekt in einer generischen, Plugin-unabhängigen Eclipse-Ansicht zu beschreiben. Wie heißt das Projekt? Auf welche anderen Projekte im Arbeitsbereich bezieht es sich? Welche Builder werden verwendet, um das Projekt zu erstellen? (Denken Sie daran, das Konzept des "Builds" bezieht sich nicht speziell auf Java-Projekte, sondern auch auf andere Arten von Projekten.)Die
.classpath
Datei wird von der JDT-Funktion von Eclipse verwaltet ( Feature = Satz von Plugins). JDT enthält mehrere solcher "Metadateien" im Projekt (siehe das.settings
Verzeichnis im Projekt). Die.classpath
Datei ist nur eine davon. Insbesondere.classpath
enthält die Datei Informationen, die die JDT-Funktion benötigt, um das Projekt ordnungsgemäß zu kompilieren: die Quellordner des Projekts (dh was kompiliert werden soll); die Ausgabeordner (wo kompiliert werden soll ); und Klassenpfadeinträge (wie andere Projekte im Arbeitsbereich, beliebige JAR-Dateien im Dateisystem usw.).Das blinde Kopieren solcher Dateien von einem Computer auf einen anderen kann riskant sein. Wenn beispielsweise beliebige JAR-Dateien im Klassenpfad abgelegt werden (dh JAR-Dateien, die sich außerhalb des Arbeitsbereichs befinden und auf die durch die absolute Pfadbenennung verwiesen wird), wird die
.classpath
Datei nicht portierbar und muss geändert werden tragbar. Es gibt bestimmte Best Practices, die befolgt werden können, um die.classpath
Portabilität von Dateien zu gewährleisten .quelle
git
und verwalteMaven
, dh ich habe (der Einfachheit halber) den "root" -Ordner des Repositorys (Projekts) mit einem einzigensrc
Ordner (enthält eine einfache "Hallo Welt".java
-Datei) und diepox.xml
Projektdatei - so, wenn ich Sie richtig verstanden habe , gibt es keine Notwendigkeit (oder vielleicht sogar notwendigerweise nicht erforderlich) die halten:.project
,.classpath
und.settings/
Dateien / Ordner als auch imgit
Repository (IE- fügen Sie sie in die.gitignore
Datei zum Beispiel)?m2eclipse
für Sie erledigt ist (oder zumindest ist es das, was es tun soll)..project
sollte nicht in sein.gitignore
. In Bezug auf.classpath
- Wenn Sie verwendenm2eclipse
und Ihr Arbeitsbereich so konfiguriert ist, dass Maven-Projekte beim Start aktualisiert werden, sollten Sie mit dem Hinzufügen.classpath
zu einverstanden sein ,.gitignore
aber ich habe es nicht selbst getestet..project
und.classpath
von allen und fügte hinzu.gitignore
. Alles funktioniert gut und ich muss diese Dateien in Git nicht zu häufig endlos aktualisieren..project
Wenn ein Projekt im Arbeitsbereich erstellt wird, wird automatisch eine Projektbeschreibungsdatei generiert, die das Projekt beschreibt. Der einzige Zweck dieser Datei besteht darin, das Projekt selbstbeschreibend zu machen, damit ein Projekt, das komprimiert oder auf einem Server freigegeben wurde, in einem anderen Arbeitsbereich korrekt neu erstellt werden kann.
.classpath
Der Klassenpfad gibt an, welche Java-Quelldateien und Ressourcendateien in einem Projekt vom Java-Builder berücksichtigt werden, und gibt an, wie Typen außerhalb des Projekts gefunden werden. Der Java Builder kompiliert die Java-Quelldateien in den Ausgabeordner und kopiert auch die Ressourcen in diesen Ordner.
quelle
Für die genannten Dateien ist keine vollständige Referenz verfügbar, da sie durch verschiedene Plug-Ins erweiterbar sind.
Grundsätzlich speichern .project-Dateien Projekteinstellungen wie Builder- und Projektnatureinstellungen, während .classpath-Dateien den Klassenpfad definieren, der während der Ausführung verwendet werden soll. Die Klassenpfaddateien enthalten src- und Zieleinträge, die Ordnern im Projekt entsprechen. Die con-Einträge werden verwendet, um eine Art "virtueller" Einträge zu beschreiben, wie z. B. die JVM-Bibliotheken oder bei Eclipse-Plug-Ins-Abhängigkeiten (normale Java-Projektabhängigkeiten werden mithilfe eines speziellen src-Eintrags unterschiedlich angezeigt).
quelle
Diese Eclipse-Dokumentation enthält Details zu den Markups in der
.project
Datei: Die ProjektbeschreibungsdateiEs beschreibt die
.project
Datei als:quelle