Що знаходиться у файлі Eclipse .classpath / .project?


143

Нещодавно у нас був випуск проекту Eclipse для одного з членів нашої команди. Tomcat не розгортав JAR програми.

Ми врешті-решт помітили, що .classpathфайл Eclipse не такий, як для членів команди, де проект був добре. Ми замінили .classpathфайл на один із проекту, який був добре, і розгортання Tomcat було завершено.

Просто з цікавості і знати, на що дивитись у майбутньому, якщо щось не так, що знаходиться всередині .classpathта .projectфайли. Що я можу додати туди, що це все означає?


Чи специфічний файл .classpath для Java? Це питання здається здебільшого мовним-агностичним, але з цієї відповіді це звучить так, що стосується лише Java.
Кейсі Кубалл

Відповіді:


144

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

.projectФайл підтримується основною платформою Eclipse , і його мета полягає в тому, щоб описати проект від загального, плагіна незалежного погляду Eclipse. Як називається проект? про які ще проекти в робочій області це стосується? Які будівельники використовуються для побудови проекту? (пам'ятайте, що поняття "будувати" не стосується конкретно проектів Java, а також інших проектів)

.classpathФайл підтримується функція в Eclipse JDT ( функція = набір плагінів). JDT вміщує в проекті кілька таких "мета" файлів (див. .settingsКаталог всередині проекту); .classpathфайл тільки один з них. Зокрема, .classpathфайл містить інформацію, яка потрібна функції JDT, щоб правильно скомпілювати проект: папки вихідних даних проекту (тобто те , що потрібно компілювати); вихідні папки (де для компіляції з ); і записи класного шляху (наприклад, інші проекти в робочій області, довільні файли JAR у файловій системі тощо).

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


58
Як аутсайдер у всьому цьому, це все перекладається як "Eclipse якось встигає перетворити все про управління робочим простором проекту на непереборне чорне мистецтво, яке занадто важко для того, щоб хтось зрозумів".
Warren P

1
@Isaac - з цікавості, якщо я керую своїм проектом gitі Maven, значить, маю (для простоти) папку "root" сховища (проекту) з однією srcпапкою (вміщує простий .javaфайл "привіт світ" ) і проекту 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 та цільові записи, які відповідають папкам у проекті; Контекстні записи використовуються для опису якихось "віртуальних" записів, наприклад, JVM libs або у випадку залежностей плагінів затемнення (звичайні залежності проекту Java відображаються по-різному, використовуючи спеціальний запис src).


3

Ця документація затемнення містить детальну інформацію про розмітки у .projectфайлі: Файл опису проекту

Він описує .projectфайл як:

Коли проект створюється в робочій області, автоматично формується файл опису проекту, який описує проект. Мета цього файлу полягає в тому, щоб зробити проект самоописуваним, щоб проект, який заархівовано або випущений на сервер, міг бути правильно відтворений в іншій робочій області. Цей файл завжди називається ".project"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.