Заставить Netbeans и Subversion хорошо работать вместе с библиотеками?

Мне трудно понять, как добавить .jar/library в проект Netbeans таким образом, чтобы я мог зафиксировать его в репозитории.

Типичный способ добавления библиотеки (согласно документам Netbeans, с которыми я уже ознакомился) заканчивается тем, что она просто локальна для меня. Любой, кто проверит мой проект, в конечном итоге пропустит мою необходимую библиотеку.

Вставка его вручную и попытка обойти Netbeans приводит к зависанию Netbeans при попытке сканирования проекта...

Итак, как я могу сказать Netbeans выбрать jar в качестве библиотеки и включить его в мой проект таким образом, чтобы Subversion могла с этим справиться?


person Brian Knoblauch    schedule 13.11.2008    source источник


Ответы (7)


Есть несколько способов исправить это.

О. Когда вы определяете свою библиотеку, используйте путь к общему местоположению. Расположение, одинаковое на всех компьютерах, например расположение JAR, установленного сторонним приложением, в Program Files или /usr/local/, или на сетевом диске.

Затем, когда они извлекают код, путь по-прежнему будет правильным, и им не нужно определять библиотеку в своем рабочем пространстве Netbeans.

B. Отредактируйте файл project.properties, чтобы использовать относительный путь. Откройте файл project.properties и найдите «libs.LIBRARY_NAME.classpath=...». Это будет расположение по умолчанию, используемое, если библиотека не определена.

Измените это, чтобы использовать путь относительно вашего проекта и сохранить файлы jar в вашем проекте. Например: libs.Log4J.classpath=lib/log4j.jar

Имейте в виду, что определение библиотеки в вашем диспетчере библиотек переопределит это значение, поэтому убедитесь, что вы синхронизируете их (т. е. добавляете номер версии к имени библиотеки!).

C. Используйте предложение Винсента об использовании системы сборки, такой как Maven. Процесс сборки Maven позаботится о загрузке зависимостей и т. д. В Netbeans есть плагины для нескольких популярных систем сборки.

person James Schek    schedule 13.11.2008
comment
Просто вручную изменил nbproject/project.properties, и он отлично работает. - person givanse; 30.08.2009

В NetBeans 6.5 появилась новая функция (пути на основе переменных в проектах), которая должна упростить эту задачу.

См. http://wiki.netbeans.org/NewAndNoteWorthyNB65#section-NewAndNoteWorthyNB65-VariableBasedPathsInJ2SEJ2EEProjects для получения подробной информации. Обратите внимание, что на снимке экрана есть ссылки на переменные в настройщике библиотеки.

person Tor Norbye    schedule 23.12.2008

На самом деле это не ответ на ваш вопрос, но... как правило, вы не должны включать эти библиотеки в свой репозиторий subversion. Обычно нет необходимости управлять ими. Возможно, вы захотите настроить центральный репозиторий, аналогичный тому, что происходит с maven. Если вы используете maven, вы можете создать локальный репозиторий библиотек на сервере, доступном для команды. Зависимости от этих библиотек вводятся в файл pom.xml, который находится в репозитории subversion. Теперь, когда члены команды проверяют код из subversion, все они имеют доступ к репозиторию maven.

[Я ищу ссылку на это прямо сейчас. Когда я найду его, я отредактирую этот ответ.]

person Vincent Ramdhanie    schedule 13.11.2008

Я использую IDE NetBeans 6.5.1, и лучшее решение, которое я нашел до сих пор, — это включить необходимые библиотеки с вашего локального хоста, а затем изменить их пути на относительные. После этого вам необходимо вручную удалить библиотеки из файла NetBeans Проводник, а затем снова вручную скопируйте их из расположения операционной системы на вашем компьютере в проводник. Таким образом, NetBeans обнаружит изменение, и вы сможете зафиксировать его в репозитории.


Примечание. Я настоятельно рекомендую очистить и снова собрать проект после обновления.

person Julio Mendoza    schedule 27.09.2010

Простой способ упаковать ваши lib/jars в ваш проект, чтобы subversion «просто справился с этим», чтобы вы могли получить его со всеми подключенными библиотеками, готовыми к компиляции и работе, — это включить их все в каталог вашего проекта через «общий доступ». библиотеки», управляя папкой библиотек.

При создании нового проекта вы можете указать «Использовать выделенную папку для хранения библиотек», а затем использовать предложенный относительный путь .\lib. Если у вас есть существующий проект, вы можете отредактировать его свойства, категорию библиотек и найти папку библиотек. Опять же, при первом запуске будет предложено .\lib, а затем будет предложено скопировать существующие зависимости в эту папку. Эти графические действия должны давать результаты, аналогичные ответу «B» Джеймса Шека.

Зафиксируйте проект с недавно добавленными библиотеками в .\lib, и вы сможете извлекать и выполнять сборку из любого места и знать, что у вас будут те же библиотеки (в той же версии), что и при последней сборке и фиксации.

Я не знаю, как долго эта функция существует в NetBeans. Подробнее см.:

http://netbeans.org/kb/docs/java/project-setup.html#projects-shared-libraries

person jla    schedule 05.11.2010

В итоге я просто скачал свой собственный набор и поместил его на локальный диск для этого проекта. Я настроил свой Netbeans, чтобы посмотреть туда, и предупредил других ребят о том, что я сделал... В конце концов, нам придется сделать что-то более масштабируемое... :-)

person Brian Knoblauch    schedule 23.12.2008
comment
Да, я не понимаю, как это допустимо. Я хочу, чтобы кто-нибудь смог вытащить мой проект из subversion со всеми подключенными библиотеками, готовыми к компиляции и работе. - person rik.the.vik; 04.02.2009
comment
Я согласен. Хотя это кажется невозможным. Поразительно, что у нас может быть эта проблема в наше время. Я думал, что все глупые проблемы, подобные этой, были бы решены давным-давно... - person Brian Knoblauch; 04.02.2009
comment
Эта запись теперь заменена другим ответом от меня. - person Brian Knoblauch; 30.10.2009

Хорошо, рабочее решение, к которому я сейчас перешел, состоит в том, чтобы извлечь файлы классов из банок и сбросить их в область исходных пакетов. Затем все это фиксируется в репозитории, а также позволяет избежать необходимости обрабатывать отдельный каталог «lib» на этапе развертывания.

Это решение делает все, что я ищу, но я чувствую себя очень грязным, делая это таким образом. Это кажется ужасно сломанным и неправильным... :-)

person Brian Knoblauch    schedule 30.10.2009