Как правильно в eclipse сохранять библиотеки в cvs?
От: VetalB  
Дата: 19.08.06 10:01
Оценка:
Всем привет!

Работаем командой. Пишем проекты в eclipse. Хотим иметь общий репозиторий в cvs. Хотим заливать в cvs исходники, а также все библиотеки, которые используются в соответствующем проекте.


Например. Есть проект Project1. Это проект использует hibernate. Для того, чтобы работать с hibernate, необходимо, чтобы проект использовал почти 40 библиотек (jar).

Если создать user library в eclipse под названием hibernate-libs, то там необходимо указывать локальные пути на машине разработчика, и при заливке в cvs эти библиотеки не заливаются. Соответственно, когда другой разработчик достает проект из репозитория, он должен руками подключать к проекту все библиотеки. То-есть определить, что нужно включить, найти где они лежать и подключить. И так каждый раз.

Если ложить библиотеки в папочку проекта и создавать user-library, и в него добавлять библиотеки из папочки в проекте, то все библиотеки успешно добавляются в cvs и скачиваются из него. Однако после checkout эти библиотеки не связаны с hibernate-libs. И необходимо заново включать эти библиотеки в проект руками.

Единственный способ, когда не нужно ничего руками включать, это в build path в свойствах проекта включить все библиотеки через Add Jars... Однако все эти библиотеки бросаются в корень проекта в виде Package Explorer, и работать после этого с Package Explorer становится тяжело.

Вобщем, помогите, плиз, разобраться, как нужно добавлять различные библиотеки в eclipse-проект, чтобы не нужно было на другой машине руками добавлять библиотеки, и нормально при этом работать с package exporer

Всем заранее спасибо!

21.08.06 12:54: Перенесено модератором из 'Java' — Blazkowicz
21.08.06 21:04: Перенесено модератором из 'Управление проектами' — IB
Re: Как правильно в eclipse сохранять библиотеки в cvs?
От: _PiT_ Россия ICQ: 68909455
Дата: 19.08.06 10:29
Оценка:
Здравствуйте, VetalB, Вы писали:

VB>Всем привет!


VB>Работаем командой. Пишем проекты в eclipse. Хотим иметь общий репозиторий в cvs. Хотим заливать в cvs исходники, а также все библиотеки, которые используются в соответствующем проекте.


VB>Например. Есть проект Project1. Это проект использует hibernate. Для того, чтобы работать с hibernate, необходимо, чтобы проект использовал почти 40 библиотек (jar).

есть мнение, что хранить библиотеки в cvs нестоит, хотя не все с этим согласны. дело вкуса. мы решили эту проблему с помощью maven2, в svn лежат только исходники, а все jarники в отдельном репозитории.

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

VB>Единственный способ, когда не нужно ничего руками включать, это в build path в свойствах проекта включить все библиотеки через Add Jars... Однако все эти библиотеки бросаются в корень проекта в виде Package Explorer, и работать после этого с Package Explorer становится тяжело.

в эклипсе можно отфильтровать Package Explorer. тогда либы там отображаться не будут. (http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-47.htm)


VB>Вобщем, помогите, плиз, разобраться, как нужно добавлять различные библиотеки в eclipse-проект, чтобы не нужно было на другой машине руками добавлять библиотеки, и нормально при этом работать с package exporer

ну если желагние хранить эклипс проект в cvs ещё осталось то можешь использотьва User Variables
в проектном файле все пути к либе будут прописаны MY_VAR/libs/hibernate.jar
у каждого разработчика переменная MY_VAR будет указыватиь куда-угодно.
Твой учитель — это не тот, кто тебя учит, а тот, у кого учишься ты
(c) Записная книжка Дональда Шимоды
Re[2]: Как правильно в eclipse сохранять библиотеки в cvs?
От: dshe  
Дата: 19.08.06 11:07
Оценка:
Здравствуйте, _PiT_, Вы писали:

_PT>Здравствуйте, VetalB, Вы писали:


VB>>Всем привет!


VB>>Работаем командой. Пишем проекты в eclipse. Хотим иметь общий репозиторий в cvs. Хотим заливать в cvs исходники, а также все библиотеки, которые используются в соответствующем проекте.


VB>>Например. Есть проект Project1. Это проект использует hibernate. Для того, чтобы работать с hibernate, необходимо, чтобы проект использовал почти 40 библиотек (jar).

_PT>есть мнение, что хранить библиотеки в cvs нестоит, хотя не все с этим согласны. дело вкуса. мы решили эту проблему с помощью maven2, в svn лежат только исходники, а все jarники в отдельном репозитории.

+1

_PT>хранить в cvs файлы проектов тоже неверное решение. у каждого могут быть свои настройки, пути и прочее.


Хранить файлы проектов под cvs -- решение вполне правильное. Во-первых, общие настройки позволяют избежать граблей, когда у одного разработчика проект компилится и работает, а у остальных -- нет. Во-вторых, файлы проектов под CVS позволят избежать их ручную доводку напильником остальными разработчиками, когда один что-то в файле проекта поменял (добавил новую библиотеку или перещел на новую версию).

Другое дело, что файлы проектов должны быть переносимыми. Например так:
_PT>ну если желагние хранить эклипс проект в cvs ещё осталось то можешь использотьва User Variables
_PT>в проектном файле все пути к либе будут прописаны MY_VAR/libs/hibernate.jar
_PT>у каждого разработчика переменная MY_VAR будет указыватиь куда-угодно.

Возможен еще такой вариант: для библиотек создается отдельный eclipse проект (который вместе с библиотеками кладется под CVS). Нормальные проекты ссылаются на библиотеки внутри данного "библиотечного" проекта относительно корня workspace'а.
--
Дмитро
Re[3]: Как правильно в eclipse сохранять библиотеки в cvs?
От: _PiT_ Россия ICQ: 68909455
Дата: 19.08.06 11:16
Оценка:
_PT>>хранить в cvs файлы проектов тоже неверное решение. у каждого могут быть свои настройки, пути и прочее.

D>Хранить файлы проектов под cvs -- решение вполне правильное. Во-первых, общие настройки позволяют избежать граблей, когда у одного разработчика проект компилится и работает, а у остальных -- нет. Во-вторых, файлы проектов под CVS позволят избежать их ручную доводку напильником остальными разработчиками, когда один что-то в файле проекта поменял (добавил новую библиотеку или перещел на новую версию).

не согласен. такое было бы справедливо, если бы проект собирался средствами IDE. но сейчас большинство проектов собирается какой-либо тулзой для сборки. и вот если кто-то где-то что-то поменял, то менять он должен в скрипте сборки, а не в проектном файле. т.е. далеко не всегда получается, что вся команда работает в одной IDE, иногда может понадобиться собрать проект без IDE. что тогда делать? лезть на комп где есть именно эта IDE(и имменно той нужной версии, для которой лежат файлы в cvs) и сравнивать какие там настройки?

весь процесс сбоорки проекта должен быть либо чётко документирован в каком-то документе, либо хорошо прописан скриптом сборки, и должен без проблем собираться у каждого разработчика, вне зависимости от того, какой IDE он пользуется.


D>Возможен еще такой вариант: для библиотек создается отдельный eclipse проект (который вместе с библиотеками кладется под CVS). Нормальные проекты ссылаются на библиотеки внутри данного "библиотечного" проекта относительно корня workspace'а.

ну как workaround согласен, катит. но опять же при условии, что все сидят на одной IDE.
Твой учитель — это не тот, кто тебя учит, а тот, у кого учишься ты
(c) Записная книжка Дональда Шимоды
Re[4]: Как правильно в eclipse сохранять библиотеки в cvs?
От: dshe  
Дата: 19.08.06 12:13
Оценка:
Здравствуйте, _PiT_, Вы писали:

_PT>>>хранить в cvs файлы проектов тоже неверное решение. у каждого могут быть свои настройки, пути и прочее.


D>>Хранить файлы проектов под cvs -- решение вполне правильное. Во-первых, общие настройки позволяют избежать граблей, когда у одного разработчика проект компилится и работает, а у остальных -- нет. Во-вторых, файлы проектов под CVS позволят избежать их ручную доводку напильником остальными разработчиками, когда один что-то в файле проекта поменял (добавил новую библиотеку или перещел на новую версию).


_PT>не согласен. такое было бы справедливо, если бы проект собирался средствами IDE. но сейчас большинство проектов собирается какой-либо тулзой для сборки. и вот если кто-то где-то что-то поменял, то менять он должен в скрипте сборки, а не в проектном файле. т.е. далеко не всегда получается, что вся команда работает в одной IDE, иногда может понадобиться собрать проект без IDE. что тогда делать? лезть на комп где есть именно эта IDE(и имменно той нужной версии, для которой лежат файлы в cvs) и сравнивать какие там настройки?


_PT>весь процесс сбоорки проекта должен быть либо чётко документирован в каком-то документе, либо хорошо прописан скриптом сборки, и должен без проблем собираться у каждого разработчика, вне зависимости от того, какой IDE он пользуется.


Глубоко убежден, что для эффективной работы команды все должны использовать одни и те же средства (IDE с одинаковым набором плагинов).

Ситуация (основана она, правда, на моем собственном опыте). Каждый разработчик использует ту среду, которая ему нравится. Разработчик Вася использует Eclipse, Петя использует JBuilder, а Вова -- IDEA. И вот в один прекрасный момент Вася решил перейти на новую версию puperframework. После того, как он зачекинил исходники, он пишет (или просто говорит словами) всем нотификацию, типа "пацаны, вместо 1.2.6 юзайте 2.0m1 puperframework". Минут через 45 разработчик Петя приходит с обеда и рефрешит исходники и с ужасом обнаруживает, что они не компилятся. Полчаса втыкает чтобы понять, что это не он протупил и минут десять на то, чтобы понять, что во всем виноват Вася (судя по истории изменения файлов). Петя матами зовет Васю. Вася подходит, еще минут десять втыкает в JBuilder, который он знать не знает и не хочет знать, и наконец понимает, что Петя все еще использует старую версию puperframework. "А ты, <нехороший человек>, когда в последний раз читал почту?" -- матами отвечает Вася. Петя находит злосчастное письмо и понимает, что это он так глубоко облажался. Тратит секунд 10 на то, чтобы перейти на версию 2.0m1 puperframework'а и минут 5 курит, переживая происшедшее. Вася возвращается на свое место. Минут через 20 от Вовы слышится что-то вроде "Мужики, а у меня что-то не компилится. Мы что, уже 2.0m1 используем?" ...

А еще, когда приходит newcomer настройка среды для него занимает намного меньше времени. Даже если есть документ, в котором все подробно описано, и даже если он еще не устарел (! что кстати, бывает редко), newcomer'у все равно, как правило, требуется помощь коллег.

На самом деле это было бы очень хорошо, если бы файлы проектов генерились по компиляционным скриптам. Однако этого достичь бывает трудно. Форматы файлов проектов различных IDE не всегда хорошо документированы и, кроме того, файлы проектов могут содержать IDE-specific информацию, которую по компиляционным скриптам восстановить невозможно.
--
Дмитро
Re[5]: Как правильно в eclipse сохранять библиотеки в cvs?
От: _PiT_ Россия ICQ: 68909455
Дата: 19.08.06 12:32
Оценка:
ну вкусы у всех рызные, потому и IDE все разную используют сложно добиться универсальности да наверное и не надо


про описанную ситуацию: пусть если все проектные файлы лежат в cvs, и Вася поменяв версию пуперфреймворка сохранил нужную версию в проектном фалйе. Петя и Вова точно также могли про это неуслышать/прослушать/забыть и т.д. что версия то новая теперь
и тогда:
D>Минут через 20 от Вовы слышится что-то вроде "Мужики, а у меня что-то не -компилится- работает. Мы что, уже 2.0m1 используем?" ...

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

так что, чтобы Петя не курил нервно 5 минут в коридоре бабмбук, из-за полученной моральной травмы от перехода на пуперфреймворк, его надо было бы к этому подготовить/предупредить


D>На самом деле это было бы очень хорошо, если бы файлы проектов генерились по компиляционным скриптам. Однако этого достичь бывает трудно. Форматы файлов проектов различных IDE не всегда хорошо документированы и, кроме того, файлы проектов могут содержать IDE-specific информацию, которую по компиляционным скриптам восстановить невозможно.

ну для Eclipse и IDEA такие програмки есть. тот же maven умеет для них генерить готовые проектные файлы.


но в целом, у каждой команды свой подход к написанию продукта и не столь важно какой он. главное чтобы работалось продуктивно и более менее комфортно
Твой учитель — это не тот, кто тебя учит, а тот, у кого учишься ты
(c) Записная книжка Дональда Шимоды
Re[5]: Как правильно в eclipse сохранять библиотеки в cvs?
От: _joker Россия  
Дата: 20.08.06 08:55
Оценка:
Здравствуйте, dshe, Вы писали:

D>И вот в один прекрасный момент Вася решил перейти на новую версию puperframework. После того, как он зачекинил исходники, он пишет (или просто говорит словами) всем нотификацию, типа "пацаны, вместо 1.2.6 юзайте 2.0m1 puperframework".


Именно поэтому все jar-ники проекта нужно хранить в cvs. Экономия на лишних 100 метрах тут неуместна.
Если не компилится, то проверить
— подключены ли все либы
— dependency между модулями проекта
— мыло


Я обычно придерживаюсь принципа: любой человек даже далекий от программирования может собрать проект
$ svn co myproject
$ vi build.properties
$ ant

А ограничивать в выборе среды думаю не стоит. И если испрользуется 10 разных сред разработки, то несложно добавить
в wikki проекта инструкции по настройке каждой среды.
... << RSDN@Home 1.1.4 @@subversion >>
Re[6]: Как правильно в eclipse сохранять библиотеки в cvs?
От: DoС  
Дата: 23.08.06 08:58
Оценка:
Здравствуйте, _PiT_, Вы писали:

_PT>ну для Eclipse и IDEA такие програмки есть. тот же maven умеет для них генерить готовые проектные файлы.

а для Ant ничего не встречали?
Re[7]: Как правильно в eclipse сохранять библиотеки в cvs?
От: _PiT_ Россия ICQ: 68909455
Дата: 23.08.06 11:08
Оценка: 2 (1)
_PT>>ну для Eclipse и IDEA такие програмки есть. тот же maven умеет для них генерить готовые проектные файлы.
DoС>а для Ant ничего не встречали?
http://sourceforge.net/projects/ant-eclipse
Твой учитель — это не тот, кто тебя учит, а тот, у кого учишься ты
(c) Записная книжка Дональда Шимоды
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.