Что находится в файле Eclipse .classpath / .project?

Недавно у нас возникла проблема с проектом Eclipse для одного из членов нашей команды. Tomcat не развертывал JAR-файлы приложения.

В конце концов мы заметили, что файл .classpath Eclipse не был таким же, как для членов команды, у которых проект был в порядке. Мы заменили файл .classpath файлом из проекта, который был в порядке, и развертывание Tomcat было завершено.

Просто из любопытства и чтобы знать, что искать в будущем, если что-то пойдет не так, что находится внутри файлов .classpath и .project. Что я могу туда добавить, что все это значит?


person totalEclipse    schedule 25.08.2011    source источник
comment
Является ли файл .classpath специфичным для Java? Этот вопрос кажется в основном независимым от языка, но из этого ответа похоже, что это относится только к Java.   -  person Casey Kuball    schedule 13.09.2017
comment
связанные, stackoverflow.com/questions/13960556/   -  person TT--    schedule 18.02.2019


Ответы (4)


Eclipse - это среда выполнения для плагинов. Практически все, что вы видите в Eclipse, является результатом установки плагинов в Eclipse, а не самого Eclipse.

Файл .project поддерживается базовой платформой Eclipse, и его цель - описать проект из общего, независимого от плагинов представления Eclipse. Как называется проект? к каким еще проектам в рабочей области он относится? Какие конструкторы используются для создания проекта? (помните, что понятие «сборка» относится не только к проектам Java, но и к другим типам проектов)

Файл .classpath поддерживается функцией JDT Eclipse (функция = набор подключаемых модулей). JDT содержит несколько таких «мета-файлов» в проекте (см. Каталог .settings внутри проекта); файл .classpath - лишь один из них. В частности, файл .classpath содержит информацию, которая необходима функции JDT для правильной компиляции проекта: исходные папки проекта (то есть что для компиляции); папки вывода (где компилировать в); и записи пути к классам (например, другие проекты в рабочей области, произвольные файлы JAR в файловой системе и т. д.).

Слепое копирование таких файлов с одной машины на другую может быть рискованным. Например, если произвольные файлы JAR помещаются в путь к классам (то есть файлы JAR, которые расположены за пределами рабочей области и упоминаются по абсолютному имени пути), файл .classpath становится непереносимым и должен быть изменен, чтобы быть портативным. Существуют определенные передовые методы, которым можно следовать, чтобы гарантировать .classpath переносимость файлов.

person Isaac    schedule 29.12.2012
comment
Будучи сторонним наблюдателем во всем этом, все это означает, что Eclipse каким-то образом удается превратить все, что касается управления рабочим пространством проекта, в непостижимое черное искусство, которое слишком сложно для понимания кем-либо. - person Warren P; 22.06.2016
comment
@Isaac - Из любопытства, на случай, если я управляю своим проектом с git и Maven, то есть у меня (для простоты) есть корневая папка репозитория (проекта) с одной папкой src (содержит простой файл hello world .java) и файл проекта pox.xml - так что, если я правильно вас понял, нет необходимости (или, может быть, даже не обязательно) хранить файлы / папки: .project, .classpath и .settings/ в репозитории git (т. е. добавлять их в .gitignore файл например)? - person Guy Avraham; 11.12.2018
comment
@GuyAvraham, это зависит от того, как вы работаете с Eclipse, и, в частности, от того, как вы инициализируете рабочее пространство. Вы запускаете Eclipse в новой рабочей области, а затем используете импорт существующих проектов Maven? если да, то вы правы - ни один из этих файлов на самом деле не нужен, поскольку m2eclipse позаботится об этом за вас (или, по крайней мере, это то, что он должен делать). - person Isaac; 11.12.2018
comment
@Isaac - Да, именно так я и использую. Спасибо за ответ! - person Guy Avraham; 11.12.2018
comment
мне добавить эти файлы в .gitignore? - person buncis; 19.09.2019
comment
@buncis .project не должно быть в .gitignore. Что касается .classpath - если вы используете m2eclipse и ваше рабочее пространство настроено для обновления проектов Maven при запуске, тогда вы должны согласиться с добавлением .classpath в .gitignore, но я не тестировал это сам. - person Isaac; 20.09.2019
comment
@buncis просто поправляет последний комментарий. Судя по всему, M2E в настоящее время очень хорошо справляется с настройкой проектов. Недавно я работал над кодовой базой примерно из 150 проектов Java всех типов. Я удалил .project и .classpath из всех и добавил в .gitignore. Все работает хорошо, и мне не нужно слишком часто бесконечно обновлять эти файлы в Git. - person Isaac; 13.05.2020
comment
Будет ли это создавать какие-либо проблемы, если мы вставим этот файл .classpath в репо, и если он будет извлечен другими людьми? - person MrNolan; 16.07.2020
comment
@MrNolan действительно, это будет проблемой. Однако, если вы используете Maven, а также плагин M2E для Eclipse, вам не нужно отправлять .classpath в репозиторий. Собственно говоря, не стоит. - person Isaac; 17.07.2020

.project

Когда проект создается в рабочей области, автоматически создается файл описания проекта, который описывает проект. Единственная цель этого файла - сделать проект самоописывающим, чтобы проект, заархивированный или выпущенный на сервер, можно было правильно воссоздать в другой рабочей области.

.classpath

Путь к классам указывает, какие исходные файлы Java и файлы ресурсов в проекте учитываются построителем Java, и указывает, как искать типы вне проекта. Конструктор Java компилирует исходные файлы Java в выходную папку, а также копирует в нее ресурсы.

person Rupesh Yadav    schedule 29.12.2012

Полный справочник по указанным файлам недоступен, так как они расширяются с помощью различных плагинов.

По сути, файлы .project хранят настройки проекта, такие как настройки построителя и характера проекта, а файлы .classpath определяют путь к классам, который будет использоваться во время выполнения. Файлы пути к классам содержат записи src и target, соответствующие папкам в проекте; записи con используются для описания каких-то «виртуальных» записей, таких как библиотеки JVM или в случае зависимостей подключаемых модулей eclipse (обычные зависимости проекта Java отображаются по-другому, с использованием специальной записи src).

person Zoltán Ujhelyi    schedule 25.08.2011

Эта документация по затмению содержит подробную информацию о пометках в .project файле: Файл описания проекта

Он описывает файл .project как:

Когда проект создается в рабочей области, автоматически создается файл описания проекта, который описывает проект. Цель этого файла - сделать проект самоописывающим, чтобы проект, заархивированный или выпущенный на сервер, можно было правильно воссоздать в другой рабочей области. Этот файл всегда называется ".project".

person senpai    schedule 03.11.2017