У нас есть основной набор java-библиотек, публикуемых как файлы jar
, которые используются в нескольких клиентских проектах. Проекты библиотек и клиентские проекты находятся на нашем сервере git (GitLab EE). Иногда клиенты и сторонние поставщики (например, субподрядчики) имеют доступ к исходному коду проекта, но мы не хотим, чтобы они имели доступ к источнику для основных java-библиотек.
Так что мне нужно знать, как настроить какую-либо зависимость или подобное в git, чтобы мы могли автоматически использовать последнюю версию файла библиотеки? Я смотрел на git submodule
, но похоже, что он потянет или, по крайней мере, даст доступ к полному источнику библиотечных проектов. Я также начал смотреть на Maven
, но неясно, нужен ли ему также доступ ко всему репозиторию. Есть ли другой/лучший способ сделать это? Или Мейвен действительно сделает то, что я хочу? Или мне нужно публиковать файлы jar в другом месте, и если да, то как я могу автоматизировать этот процесс, так как я не хочу вручную копировать файл jar где-нибудь каждый раз, когда он обновляется (что часто)?
Maven и двоичный репозиторий, такой как Nexus, являются обычным способом делать то, что вы просите. Nexus хранит двоичные файлы, такие как.jar.dll и т.д., И Maven имеет возможность публиковать и получать определенные версии этих двоичных файлов и включать их при создании проекта. Как заметил Райан, Maven Central - это публичный двоичный репозиторий, который вы можете опубликовать, если хотите, чтобы весь мир был доступен для вашего.jars, но с Nexus у вас есть мелкий контроль доступа к вашим двоичным файлам.
Если вы создаете свои собственные проекты с помощью Maven, вы можете настроить его для сборки, тестирования и публикации в своем репозитории Nexus с помощью единой команды mvn deploy
. Затем клиентам просто нужно обновить свой проект, чтобы указать на новую версию, и Maven загрузит его и будет использовать его в пути к классам. Все это очень плавно, и я определенно рекомендую реорганизовать процесс сборки для использования Maven или аналогичного продукта.