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

143

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

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

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

полное затмение
источник
Является ли файл .classpath специфичным для Java? Этот вопрос кажется в основном независимым от языка, но из этого ответа он звучит так, как будто он относится только к Java.
Кейси Кубалл
связанные, stackoverflow.com/questions/13960556/…
TT--

Ответы:

144

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

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

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

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

Исаак
источник
58
Как посторонний для всего этого, все это переводится как «Eclipse каким-то образом превращает все в управлении рабочим пространством проекта в непостижимое черное искусство, которое слишком трудно понять любому».
Уоррен П
1
@Isaac - из любопытства, если я управляю своим проектом с помощью gitи Maven, то есть у меня (для простоты) есть «корневая» папка репозитория (проекта) с одной srcпапкой (содержит простой .javaфайл «hello world» ) и проекта pox.xmlфайл - так, если я правильно вас понял, что нет никакой необходимости (или , может быть , даже обязательно не нужно) не держать: .project, .classpathи .settings/файлы / папки , а также в gitхранилище (IE - добавить их в .gitignoreфайл, например)?
Гай Авраам
1
@GuyAvraham, это зависит от того, как вы работаете с Eclipse, и, в частности, - как вы инициализируете рабочее пространство. Запускаете ли вы Eclipse в новом рабочем пространстве, а затем используете «импорт существующих проектов Maven»? если это так, то вы правы - ни один из этих файлов на самом деле не нужен, так как об этом m2eclipseпозаботится за вас (или, по крайней мере, именно так и должно быть).
Исаак
1
@buncis .projectне должен быть в .gitignore. Что касается .classpath- если вы используете m2eclipseи ваше рабочее пространство настроено обновление проектов Maven при запуске, то вы должны быть в порядке с добавлением .classpathк , .gitignoreно я не проверял сам.
Исаак
1
@buncis просто исправляет последний комментарий. По-видимому, в настоящее время M2E очень хорошо выполняет настройку проектов. Недавно я работал над кодовой базой приблизительно 150 Java-проектов всех типов. Я удалил .projectи .classpathиз всех их и добавил в .gitignore. Все работает хорошо, и мне не нужно бесконечно обновлять эти файлы в Git.
Исаак
37

.project

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

.classpath

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

Рупеш Ядав
источник
11

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

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

Золтан Уйхели
источник
3

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

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

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

семпай
источник