Настройка частного удаленного репозитория Maven
Я пытаюсь настроить частный удаленный репозиторий для нашей команды. Теперь репозиторий обслуживает следующее: до сих пор я пробовал -
когда a'mvn compile' выдается, то он ищет зависимости в "~/.м2". Если он не найден там, он переходит в удаленный частный репозиторий, а когда зависимости все еще отсутствуют здесь, он переходит в центральный репозиторий.
перед компиляцией, я должен поставить все зависимости в нашем частном (и удаленном) репозитории вместе с контрольной суммой и метаданными.
когда нам нужен артефакт (например, spring - mvc), нам нужно поместить его в удаленный частный репозиторий вместе со всеми зависимостями этого артефакта (spring-mvc). В этом случае "spring-mvc" загружается из нашего удаленного частного репозитория. Но зависимости "spring-mvc" не загружаются из нашего удаленного частного репозитория. Они загружаются из центра хранилище.
Теперь то, что я пытаюсь сделать -
настройка частного удаленного репозитория " R " таким образом, что мне не нужно вручную помещать все зависимости от него. Когда выдается "компиляция mvn", то в первую очередь; зависимости ищутся в"~/.m2 "если не найден, то он переходит в частный удаленный репозиторий "R". Если зависимости находятся в 'R', то"~/.m2 "получит его от "R". Если зависимости не найдены в 'R' затем эти зависимости загружаются из центральных репозиториев и сохраняют зависимости в " R " для дальнейшего использования. После этого./~' m2 'получит их от "R". Здесь мне не нужно вручную помещать зависимости в наш удаленный частный репозиторий "R".
'~/.m2 'получит все зависимости от" spring-mvc " (это основная зависимость, упомянутая в pom моего проекта.xml) из удаленного частного репозитория " R " и " R " получит их из соответствующего Центрального хранилище.
кто-нибудь может предложить какой-либо способ или учебник для справочник для решения этих двух задач? Спасибо заранее.
EDIT: Я пробовал с Натаниэль Waisbrotответ и nexus-2.7.0-06-бандл. После нескольких часов усилий я могу настроить его, пока я использую jre-7. С jre-6 nexus не может быть запущен. Но наш проект развернут с JDK-6. Мы не хотим менять текущий jre
версия. С среда JRE-6 apache-archiva
ОК. Но я не уверен, что смогу достичь всех целей в предыдущем разделе. Есть ли archiva
пользователь/эксперт, который может сказать мне, смогу ли я достичь этих целей в предыдущем разделе?
3 ответов
у меня есть настройка nexus
для зеркального отображения моего локального репозитория maven (at ~/.m2/repository.
) так как этот пост все еще посещают много людей, я думаю, что было бы полезно для других, если бы я поделился, как я настроил nexus
как менеджер репозитория. Эта процедура работает отлично для меня Ubuntu 12.04
. Вот это -
1. скачать nexus-2.11.1-01-бандл.смола.gz или последняя версия nexus oss.
2. извлеките файл tar в домашнем каталоге -
$ tar -xvf nexus-2.11.1-01-bundle.tar.gz
теперь вы получите два каталога -nexus-2.11.1-01
и sonatype-work
в вашем домашнем каталоге.
3. скопируйте эти два каталога в /usr/local/
каталог (их можно скопировать в другое место) -
$ cp -r nexus-2.11.1-01 /usr/local/
$ cp -r sonatype-work /usr/local/
исполняемые / конфигурационные файлы, связанные с nexus, хранятся в nexus-2.11.1-01
каталог и файл jar, упомянутый в pom.xml
хранящиеся в .
Эти файлы jar являются зеркалом вашего ~/.m2/repository
. Первый раз, когда вы выдаете mvn package
команда тогда все jar
s хранятся здесь. После этого, когда вы выпускаете mvn package
опять же, все банки загружаются из репозитория nexus вместо загрузки из центрального репозитория.
4. перейти к -
$ cd /usr/local/
5. создайте ссылку на nexus-2.11.1-01
-
$ sudo ln -s nexus-2.7.0-06 nexus
6. теперь для запуска nexus введите следующее в терминал -
$ bash nexus/bin/nexus console
здесь nexus прикреплен к вашей консоли. Если вы закроете консоль, сервер nexus будет завершен. Когда вы пытаетесь запустить nexus для серверной машины Ubuntu, вы можете использовать экран.
Примечание: при попытке запустить nexus с помощью команды выше может возникнуть 2 проблемы. Если вы не нашли затем пропустите следующие 2 шага (Шаг-7 и 8)
7. первая проблема может возникнуть из-за недостаточного разрешения. Прочитайте сообщение об ошибке и выполните необходимые действия. Но как быстрый решение вы можете сделать это -
$ sudo chmod -R 777 nexus-2.11.1-01/
$ sudo chmod -R 777 sonatype-work/
8. если вы используете jdk
версия ниже java 7, Чем следующее сообщение об ошибке может быть показано -
обертка / запуск JVM... оболочка | JVM-машина вышла при загрузке приложение. JVM 1 | исключение в потоке " main" Ява.ленг.UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw / JswLauncher : неподдерживаемый major.незначительный версия 51.0
в этом случае используйте jdk7 для выполнения команды, упомянутой в шаге 6. В ubuntu это довольно просто. Предполагая, что у вас есть два jdk - jdk6 и jdk7. Ваш проект работает на jdk6. Тогда только для запуска nexus вы можете сделать это со своего терминала (при условии, что ваш jdk7 в ) -
$ export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
$ export PATH=$JAVA_HOME/bin:$PATH
9. теперь в браузере введите адрес -http://localhost:8081/nexus/. Если шаг с 1 по 6 (если ошибки произошли, то шаг с 1 по 8) сделаны отлично вы можете успешно найти экран входа в систему. Имя Пользователя по умолчанию -admin и пароль - admin123
10. остановить nexus. Просто закройте терминал или нажмите Ctrl+C на шаге 6 терминал. В тебе!--27--> каталог создайте пустой файл с именем - settings.xml
. Скопируйте в это -
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
11. и добавьте следующие строки в -
<distributionManagement>
<snapshotRepository>
<id>my-snapshots</id>
<name>My internal repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>my-releases</id>
<name>My internal repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
Sonatype Nexus делает все, что вы хотите, требует очень мало конфигурации для того, что вы просите, и имеет приятный интерфейс. Есть некоторые подробности о базовой настройке под вопросом"Maven внутренний репозиторий, это действительно так сложно?"
в принципе, вы можете настроить Nexus в качестве репозитория кэширования: ваш клиент Maven будет посещать только внутренний репозиторий. Когда внутренний репозиторий не может найти артефакт, он переходит в Центральный (или любой другой внешний репозитории, которые вы определяете), извлекает его для вас и сохраняет его для последующего использования.
это круто, потому что, если вы хотите перейти от grab-whatever-dependencies-you-want free-for-all к заблокированной среде, Nexus упрощает это. Вы настроили его, чтобы вытащить из Центра, запустить сборку с чистой машины (заставляя Nexus глотать все текущие центральные зависимости), а затем отключить функцию прокси-РЕПО (поэтому любые новые/измененные зависимости будут управляться devops).
то, что вы описали, в значительной степени является конфигурацией по умолчанию большинства менеджеров репозиториев, включая Archiva. Помогает ли следующее настроить его для использования из Maven?
http://archiva.apache.org/docs/1.3.6/userguide/using-repository.html