Регистрация JAR-файлов (библиотек) в инструменте контроля версий - это хорошая практика? - PullRequest
11 голосов
/ 13 января 2010

Я занимаюсь разработкой веб-приложения на Java и использую несколько сторонних JAR-файлов в моей папке lib. У меня также есть Subversion в качестве инструмента контроля версий.

Мой вопрос заключается в том, чтобы при проверке файлов моего проекта мне нужно было также регистрировать файлы JAR или нет необходимости в версии файлов JAR, поскольку я все равно их не изменяю?

Ответы [ 4 ]

9 голосов
/ 13 января 2010

Это довольно субъективный вопрос ... Я обычно применяю следующее правило: если у меня есть код для создания двоичного файла, проверьте код, а не двоичный; если для запуска моего кода требуется двоичный файл, и он поступает из внешнего источника, проверьте двоичный код.

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

7 голосов
/ 13 января 2010

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

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

2 голосов
/ 06 февраля 2010

Лично я бы постарался не проверять зависимости проекта в репозитории контроля версий SCM.Как правило, это происходит с использованием Maven, как предлагается в другом ответе, и развертыванием внутреннего репозитория Maven компании, который имеет преимущество, заключающееся в том, что этот ресурс является локальным для группы разработчиков, а также в месте, где могут находиться завершенные / проверенные / выпущенные артефакты вашего собственного проекта..

Проблема, с которой я вижу, что Jars является SCM, заключается в том, что в первую очередь SCM предназначен для управления исходным кодом , и они оптимизированы для этой цели.Скомпилированные артефакты не являются исходным кодом и являются двоичными файлами. Когда вы, как правило, разветвляете или обновляете двоичный файл, вы делаете копию двоичного файла, так как большинство SCM не может «различать» двоичный файл.

Другое соображениеЧто вы делаете, если у вас есть два проекта, которые нуждаются в проверке зависимостей?Вы регистрируетесь в каждом проекте отдельно и носите дубликаты?Или вы делаете третий проект, который содержит только зависимости?И теперь вы вручную управляете файлами jar в этом проекте.Что если вашим двум проектам требуются взаимно несовместимые зависимости?

В-третьих, как вы управляете межпроектными зависимостями (где один из ваших проектов зависит от другого)?Проверен ли файл jar из одного в другой?А как насчет контроля версий и других изменений?Вам просто нужно проверить два проекта и требовать, чтобы они были построены в строгом порядке?

По моему опыту и мнению, этих проблем обычно достаточно для разработки средней сложности, чтобы ответить на вопрос.окончательно: нет, нельзя проверять зависимости файла jar.Используйте систему сборки, такую ​​как Maven или Ant + Ivy (или другую альтернативу), которая предоставляет способ для внешнего управления и хранения зависимостей из системы управления исходным кодом.

1 голос
/ 14 января 2010

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

Я думаю, что это все еще актуально, но SVN исторически плохо работал с двоичными файлами. Разработчик Java в IBM столкнулся с этой проблемой, исследовал и написал свои выводы. Вы можете найти это полезным:

Настройка производительности Subversion: хранение и обработка двоичных файлов без перетаскивания производительности

Вот вынос:

Результаты этого исследования явно относятся к системе расследование, поэтому маловероятно, что показанные фактические значения имеет большое значение для других систем. Шаблоны важнее потому что они будут реплицированы в любой системе Subversion. В соответствии с наши выводы при хранении набора двоичных файлов в Subversion:

  • Наиболее эффективный по времени метод заключается в создании одного сжатого файла, содержащего двоичный файл.
  • Самый экономичный способ - использовать эффективный скрипт регистрации Subversion в обычной структуре каталогов.
  • Использование любой формы аутентификации на сервере Subversion приведет к снижению производительности.
  • Специальная мощная машина оптимально подходит для работы Subversion.
...