.classpath та .project - перевірити контроль версій чи ні?


87

Я запускаю проект Java з відкритим кодом, який складається з декількох модулів у дереві залежностей. Усі ці модулі є підкаталогами у сховищі диверсій. Для новачків нашого проекту є велика робота, щоб налаштувати все це вручну в eclipse.

Не всі наші розробники використовують eclipse. Тим не менше, ми розглядаємо можливість просто перевірити файли .classpath та .project, щоб допомогти новачкам розпочати роботу. Це гарна ідея? Або це може призвести до постійних конфліктів у цих файлах? Чи існує альтернативний спосіб спростити створення проекту на eclipse?


Відповіді:


65

Остаточно так, як я вже сказав у " Чи тримаєте ви свої файли проекту під контролем версій? "

"Завантажте, налаштуйте, ідіть".

Але ... це насправді справедливо лише для останніх налаштувань Eclipse3.5, де шляхи побудови підтримують відносні шляхи :

Шлях побудови підтримує відносні шляхи


І Eclipse3.6 було б краще, оскільки він підтримує відносні шляхи для змінних шляху в Linked Resources:

змінна шляху з відносним шляхом
(з 3.6M5)


2
Ого, я не знав, що вони додали це ... Зберегли б нас від горя
Урі,

Схоже, зображення, пов’язані з цією відповіддю, є офлайн.
vkraemer

1
@vkraemer: правда. Зараз я відновив ці дві картинки, перша - з архіву.eclipse.org/eclipse/ downloads/ drops/R-3.5-200906111540/…, а друга - з download.itemis.com/mirror/eclipse/R-3.6 -201006080911./… .
VonC

17

Безумовно, ні - загалом це жахлива ідея розповсюджувати файли проектів за допомогою диверсії. Тим більше, що хтось може змінити їх якось дивно. Хороша сторінка в документації проекту - набагато краща ідея. Наш проект також має безліч модулів та складну настройку. Ми створили сторінку злиття, яка описує, як розпочати роботу з проектом на кожному IDE популера - IntelliJ, Eclipse, NetBeans. Файл README у Subversion містить ту саму інформацію.


31
Я не можу погодитися. З мого досвіду, добре перевірити ці файли, щоб зробити оформлення замовлення якомога простішим. Хтось може змінити їх якимось дивним чином? Хтось може змінити ваш код якимось дивним чином ...
Arne Deutsch

Арне, ти повинен дати відповідь, а не коментар.
амаріліон

5
Файли проектів для будь-якої IDE насправді не є частиною жодного проекту - якщо ви хочете їх розповсюджувати - переходьте - додайте їх до статті, яку я згадав. Як правило, кожен у команді може змінювати файли у репозиторії, але не кожен може прикріплювати нові файли до важливих вузлів документації і т. Д. Дуже легко комусь забути ігнорувати файли шляху до класу та проектів та фіксувати їх, коли він цього не повинен. Навіть якщо ви тримаєте їх у диверсії - ви, звичайно, повинні тримати їх десь збоку ...
Божидар Бацов

8
-1, не міг не погодитись більше. Налаштування проектів є найважливішою частиною повсякденної роботи з проектом. Недоліки випадкової перевірки в неправильних налаштуваннях набагато менші, ніж переваги автоматичного оновлення всіх. Зрештою, ви завжди можете легко повернутися до попередніх версій.
Майкл Борґвардт,

7
Кожен має право на свою думку. Насправді я ніколи не буду створювати проект, спираючись на систему проектів Eclipse (або будь-яку іншу IDE) ... Maven - це найкращий інструмент розуміння проекту, який робить застарілі налаштування IDE застарілими. Проте час, щоб помітити, що з поточними налаштуваннями щось не так, і повернутися до попередньої версії навряд чи буде відрізнятися від часу для самостійного коригування нових налаштувань. Принаймні в моїй компанії всі члени команди отримують сповіщення по електронній пошті, якщо після більших змін потрібне втручання користувача.
Божидар Бацов

10

Я голосую проти, але це тому, що я, як правило, генерував би ці файли з maven


m2e робить більшість, але не все для вас
Junchen Liu

6

З мого досвіду, за винятком обмежених випадків, коли задіяні суто локальні налаштування, все повинно знаходитися під контролем джерела. Закон контролю джерел полягає в тому, що все, що проштовхують, слід очікувати на роботу тих, хто витягує. На жаль, затемнення часто спричиняє такі речі .classpath:

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

Отже, на моєму Mac це працює, і, можливо, хтось на Mac має такий самий JRE, але це не спрацює ні для кого іншого.

Крім того, немає простого способу обійти це. Eclipse завжди додасть це. Я ХОЧУ мати там файл .classpath, оскільки в нашій папці lib є деякі сторонні JAR-файли, де ми дбаємо про встановлення версій, тому залишаємо їх там, щоб нові розробники не повинні їх отримувати . Ми переходимо до керованої системи, але все ще зареєструвались керовані + некеровані залежності. Це означає, що всі розробники просто повинні переконатися, що два каталоги знаходяться в них .classpath. Але це краще, ніж виправляти свій JRE кожного разу, коли ви тягнете, і змінювати свій .classpath кожного разу, коли ви фіксуєте.

Eclipse робить для вас ще деякі приємні речі. Файл .project, як правило, однаковий у всіх примірниках, тому включіть його. Але найкраще у контролі джерела для eclipse - це налаштування Run Configurations. На вкладці "Загальне" у діалоговому вікні "Запустити конфігурації" збережіть конфігурації, щоб вони з'явилися для ваших колег у списках вибраного для налагодження та запуску. Для мене купа .launchфайлів потрапляє в .settingsкаталог, тому ми всі можемо ними користуватися.

Тому я кажу: .settingsкаталог переходить у вихідний контроль для налаштувань запуску (крім * .prefs)

.classpath залишається осторонь

.project заходить.


Чи так це навіть при використанні середовищ виконання для JRE / JVM?
Mr_and_Mrs_D

5

Я хотів би перевірити ці файли, щоб максимально спростити старт для нових користувачів. У кращому випадку користувач повинен перевірити проект і мати можливість запускати його без додаткових знань. Для цих файлів правила такі самі, як і для інших файлів у проекті: обробляйте їх обережно. Не слід розміщувати абсолютні штрихи у вихідному коді, а також у файлах конфігурації.

Якщо файли перевіряються таким чином, що проект працює з нуля, не повинно бути багато сил, щоб змінити їх.


5

Я рекомендую вам перевірити файли на підрив, якщо вони не містять абсолютних шляхів та інших даних, які прив'язують їх безпосередньо до середовища одного розробника.

Якщо файли містять абсолютні шляхи тощо, README буде кращим вибором.


2

Так, неодмінно перевірте їх, але переконайтеся, що ви задокументували будь-які залежності шляху та уникайте абсолютних шляхів, якщо це можливо.

Якщо ви їх не зареєструєте, тоді кожному, хто перевіряє проект, потрібно буде відтворити всі ці налаштування, що дратує та потенційно спричиняє помилки.

Деякі складні налаштування можуть бути краще оброблені сценарієм для створення цих файлів, але зазвичай краще просто перевірити їх.

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