Maven Central служит центральным менеджером репозитория, где двоичные артефакты загружаются различными командами / компаниями / частными лицами и передаются остальному миру. Подобно github и другим репозиториям исходного кода, которые очень эффективны для управления исходным кодом, эти менеджеры репозитория также действуют как назначение развертывания для ваших собственных сгенерированных двоичных артефактов.
Настройка менеджера локального хранилища имеет несколько преимуществ. Основными из них являются то, что они действуют как настраиваемый прокси-сервер между центральным Maven, так что не всем нужно загружать все зависимости из центрального репо. Другой основной причиной является контроль ваших временных сгенерированных артефактов в вашей команде. Причины использования Repository Manager предоставляют подробное объяснение полного набора преимуществ.
Этот технический совет покажет, как настроить локальный менеджер репозитория Nexus и передать в него артефакты — как моментальные снимки, так и выпуски.
Давайте начнем!
Установите и настройте локальный репозиторий Nexus
- Загрузите и распакуйте последнюю версию Nexus OSS . Логин / пароль администратора по умолчанию — admin / admin123. Логин / пароль для развертывания по умолчанию — развертывание / развертывание123
- Запустите Nexus как:
123
nexus-2.11.2-03> ./bin/nexus startStarting Nexus OSS...Started Nexus OSS.Журналы могут тогда быть замечены как:
1nexus-2.11.2-03> tail -f logs/wrapper.logИли вы можете начать, где журналы отображаются в самой консоли:
0102030405060708091011121314nexus-2.11.2-03> ./bin/nexus consoleRunning Nexus OSS...wrapper | --> Wrapper Started as Consolewrapper | Launching a JVM...jvm1| Java HotSpot(TM)64-Bit Server VM warning: ignoring option MaxPermSize=192m; support was removed in8.0jvm1| Wrapper (Version3.2.3) http://wrapper.tanukisoftware.orgjvm1| Copyright1999-2006Tanuki Software, Inc. All Rights Reserved.jvm1|. . .jvm1|2015-02-2400:17:28,706-0800INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - Runningjvm1|2015-02-2400:17:28,706-0800INFO [WrapperListener_start_runner] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - Startedjvm1|2015-02-2400:17:30,713-0800INFO [ar-4-thread-3] *SYSTEM org.sonatype.nexus.proxy.maven.routing.internal.ManagerImpl - Updated and published prefix file of"Public Repositories"[id=public] - Сконфигурируйте файл настроек Maven (~ .m2 / settings.xml), чтобы включить имя пользователя и пароль для развертывания по умолчанию:
01020304050607080910
<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"><servers><server><id>deployment</id><username>deployment</username><password>deployment123</password></server></servers></settings>
Развернуть снимок в локальный репозиторий Nexus
- Ознакомьтесь с простым примером Java EE по адресу github.com/javaee-samples/javaee7-simple-sample .
- Создайте и разверните файл WAR в локальном репозитории Nexus как:
0102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
javaee7-simple-sample> mvn deploy[INFO] Scanningforprojects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building javaee7-simple-sample1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ javaee7-simple-sample ---[INFO] Using'UTF-8'encoding to copy filtered resources.[INFO] Copying0resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ javaee7-simple-sample ---[INFO] Changes detected - recompiling the module![INFO] Compiling4source files to /Users/arungupta/workspaces/javaee7-simple-sample/target/classes[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ javaee7-simple-sample ---[INFO] Using'UTF-8'encoding to copy filtered resources.[INFO] skip non existing resourceDirectory /Users/arungupta/workspaces/javaee7-simple-sample/src/test/resources[INFO][INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ javaee7-simple-sample ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ javaee7-simple-sample ---[INFO] No tests to run.[INFO][INFO] --- maven-war-plugin:2.3:war (default-war) @ javaee7-simple-sample ---[INFO] Packaging webapp[INFO] Assembling webapp [javaee7-simple-sample] in [/Users/arungupta/workspaces/javaee7-simple-sample/target/javaee7-simple-sample][INFO] Processing war project[INFO] Copying webapp resources [/Users/arungupta/workspaces/javaee7-simple-sample/src/main/webapp][INFO] Webapp assembled in [33msecs][INFO] Building war: /Users/arungupta/workspaces/javaee7-simple-sample/target/javaee7-simple-sample.war[INFO][INFO] --- maven-install-plugin:2.4:install (default-install) @ javaee7-simple-sample ---[INFO] Installing /Users/arungupta/workspaces/javaee7-simple-sample/target/javaee7-simple-sample.war to /Users/arungupta/.m2/repository/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-SNAPSHOT.war[INFO] Installing /Users/arungupta/workspaces/javaee7-simple-sample/pom.xml to /Users/arungupta/.m2/repository/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-SNAPSHOT.pom[INFO][INFO] >>> wildfly-maven-plugin:1.0.2.Final:deploy (default) >package@ javaee7-simple-sample >>>[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ javaee7-simple-sample ---[INFO] Using'UTF-8'encoding to copy filtered resources.[INFO] Copying0resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ javaee7-simple-sample ---[INFO] Nothing to compile - all classes are up to date[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ javaee7-simple-sample ---[INFO] Using'UTF-8'encoding to copy filtered resources.[INFO] skip non existing resourceDirectory /Users/arungupta/workspaces/javaee7-simple-sample/src/test/resources[INFO][INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ javaee7-simple-sample ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ javaee7-simple-sample ---[INFO] No tests to run.[INFO] Skipping execution of surefire because it has already been runforthisconfiguration[INFO][INFO] --- maven-war-plugin:2.3:war (default-war) @ javaee7-simple-sample ---[INFO] Packaging webapp[INFO] Assembling webapp [javaee7-simple-sample] in [/Users/arungupta/workspaces/javaee7-simple-sample/target/javaee7-simple-sample][INFO] Processing war project[INFO] Copying webapp resources [/Users/arungupta/workspaces/javaee7-simple-sample/src/main/webapp][INFO] Webapp assembled in [3msecs][INFO] Building war: /Users/arungupta/workspaces/javaee7-simple-sample/target/javaee7-simple-sample.war[INFO][INFO] <<< wildfly-maven-plugin:1.0.2.Final:deploy (default) <package@ javaee7-simple-sample <<<[INFO][INFO] --- wildfly-maven-plugin:1.0.2.Final:deploy (default) @ javaee7-simple-sample ---Feb24,20151:02:46AM org.xnio.Xnio <clinit>INFO: XNIO version3.2.2.FinalFeb24,20151:02:46AM org.xnio.nio.NioXnio <clinit>INFO: XNIO NIO Implementation Version3.2.2.FinalFeb24,20151:02:46AM org.jboss.remoting3.EndpointImpl <clinit>INFO: JBoss Remoting version4.0.3.Final[INFO][INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ javaee7-simple-sample ---Downloading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/maven-metadata.xmlDownloaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/maven-metadata.xml (783 B at 4.0 KB/sec)Uploading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-20150224.090247-2.warUploaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-20150224.090247-2.war (6 KB at 90.4 KB/sec)Uploading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-20150224.090247-2.pomUploaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/javaee7-simple-sample-1.0-20150224.090247-2.pom (3 KB at 53.2 KB/sec)Downloading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/maven-metadata.xmlDownloaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/maven-metadata.xml (297 B at 13.8 KB/sec)Uploading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/maven-metadata.xmlUploaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/1.0-SNAPSHOT/maven-metadata.xml (783 B at 20.7 KB/sec)Uploading: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/maven-metadata.xmlUploaded: http://localhost:8081/nexus/content/repositories/snapshots/org/javaee7/sample/javaee7-simple-sample/maven-metadata.xml (297 B at 6.7 KB/sec)[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:4.398s[INFO] Finished at:2015-02-24T01:02:47-08:00[INFO] Final Memory: 22M/310M[INFO] ------------------------------------------------------------------------Репозиторий моментальных снимков, после отправки нескольких сборок, можно увидеть по адресу localhost: 8081 / nexus / # view-repositories; snapshots ~ browsestorage и выглядит следующим образом:
Фактическое хранилище находится в
../sonatype-work/nexus. Это создается параллельно с тем местом, где когда-либо был распакован комплект Nexus OSS.
Развертывание выпуска в локальном репозитории Nexus
- Очистите любой ранее выполненный релиз:
01020304050607080910111213141516
javaee7-simple-sample> mvn release:clean -P release[INFO] Scanningforprojects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building javaee7-simple-sample1.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-release-plugin:2.5.1:clean (default-cli) @ javaee7-simple-sample ---[INFO] Cleaning up after release...[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:0.912s[INFO] Finished at:2015-02-24T02:18:53-08:00[INFO] Final Memory: 10M/245M[INFO] ------------------------------------------------------------------------ - Подготовьтесь к следующему выпуску:
01020304050607080910111213141516171819202122232425262728293031323334353637383940414243
javaee7-simple-sample> mvn release:prepare -P release[INFO] Scanningforprojects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building javaee7-simple-sample1.3-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-release-plugin:2.5.1:prepare (default-cli) @ javaee7-simple-sample ---[INFO] Verifying that there are no local modifications...[INFO] ignoring changes on: **/pom.xml.releaseBackup, **/pom.xml.next, **/pom.xml.tag, **/pom.xml.branch, **/release.properties, **/pom.xml.backup[INFO] Executing: /bin/sh -c cd /Users/arungupta/workspaces/javaee7-simple-sample && git rev-parse --show-toplevel[INFO] Working directory: /Users/arungupta/workspaces/javaee7-simple-sample[INFO] Executing: /bin/sh -c cd /Users/arungupta/workspaces/javaee7-simple-sample && git status --porcelain .[INFO] Working directory: /Users/arungupta/workspaces/javaee7-simple-sample[WARNING] Ignoring unrecognized line: ?? release.properties[INFO] Checking dependencies and pluginsforsnapshots ...What is the release versionfor"javaee7-simple-sample"? (org.javaee7.sample:javaee7-simple-sample)1.3: :What is SCM release tag or labelfor"javaee7-simple-sample"? (org.javaee7.sample:javaee7-simple-sample) v1.3: :What is thenewdevelopment versionfor"javaee7-simple-sample"? (org.javaee7.sample:javaee7-simple-sample)1.4-SNAPSHOT: :[INFO] Transforming'javaee7-simple-sample'...[INFO] Not generating release POMs[INFO] Executing goals'clean verify'...[WARNING] Maven will be executed in interactive mode, but no input stream has been configuredforthisMavenInvoker instance.[INFO] [INFO] Scanningforprojects...[INFO] [INFO][INFO] [INFO] ------------------------------------------------------------------------[INFO] [INFO] Building javaee7-simple-sample1.3[INFO] [INFO] ------------------------------------------------------------------------. . .[INFO] Executing: /bin/sh -c cd /Users/arungupta/workspaces/javaee7-simple-sample && git symbolic-ref HEAD[INFO] Working directory: /Users/arungupta/workspaces/javaee7-simple-sample[INFO] Executing: /bin/sh -c cd /Users/arungupta/workspaces/javaee7-simple-sample && git push https://github.com/javaee-samples/javaee7-simple-sample.git refs/heads/master:refs/heads/master[INFO] Working directory: /Users/arungupta/workspaces/javaee7-simple-sample[INFO] Release preparation complete.[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:01:04min[INFO] Finished at:2015-02-24T02:55:59-08:00[INFO] Final Memory: 11M/245M[INFO] ------------------------------------------------------------------------ - Выполните релиз:
01020304050607080910111213141516171819
javaee7-simple-sample> mvn javadoc:jar source:jar release:perform -P release[INFO] Scanningforprojects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building javaee7-simple-sample1.4-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-javadoc-plugin:2.10.1:jar (default-cli) @ javaee7-simple-sample ---. . .[INFO] [INFO] ------------------------------------------------------------------------[INFO] [INFO] BUILD FAILURE[INFO] [INFO] ------------------------------------------------------------------------[INFO] [INFO] Total time:5.820s[INFO] [INFO] Finished at:2015-02-24T02:58:16-08:00[INFO] [INFO] Final Memory: 31M/312M[INFO] [INFO] ------------------------------------------------------------------------[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project javaee7-simple-sample: Failed to deploy artifacts: Could not transfer artifact org.javaee7.sample:javaee7-simple-sample:war:1.3from/to deployment (http://localhost:8081/nexus/content/repositories/releases/): Failed to transfer file: http://localhost:8081/nexus/content/repositories/releases/org/javaee7/sample/javaee7-simple-sample/1.3/javaee7-simple-sample-1.3.war. Return code is: 400, ReasonPhrase: Bad Request. -> [Help 1]Обратите внимание, как эта команда заканчивается ошибкой. Это похоже на сообщение здесь, но странно то, что файлы все еще загружаются на Nexus. Вот снимок с localhost: 8081 / nexus / # view-repositories; выпускает ~ browsestorage при попытке протестировать несколько выпусков и удивляться этим «ложным» сообщениям об ошибках:
Эта ошибка потребует дополнительной отладки, но по крайней мере снимки и сборки выпуска теперь могут храниться в локальном репозитории Nexus.
ОБНОВЛЕНИЕ: Манфред Мозер помог отладить эту ошибку, отправив запросы на извлечение . Эта ошибка теперь исчезла и вместо этого должна показать что-то вроде:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
[INFO] Uploaded: http://localhost:8081/nexus/content/repositories/releases/org/javaee7/sample/javaee7-simple-sample/1.8/javaee7-simple-sample-1.8-sources.jar (3 KB at 74.7 KB/sec)[INFO] [INFO] ------------------------------------------------------------------------[INFO] [INFO] BUILD SUCCESS[INFO] [INFO] ------------------------------------------------------------------------[INFO] [INFO] Total time: 5.673 s[INFO] [INFO] Finished at: 2015-02-26T03:50:18+05:30[INFO] [INFO] Final Memory: 31M/320M[INFO] [INFO] ------------------------------------------------------------------------[INFO] Cleaning up after release...[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 01:10 min[INFO] Finished at: 2015-02-26T03:50:30+05:30[INFO] Final Memory: 13M/245M[INFO] ------------------------------------------------------------------------ |
Вы узнали, как настроить локальный репозиторий Nexus, передать снимок и выпустить сборки для него. Последующие блоги покажут, как этот репозиторий можно использовать для CI / CD.
Наслаждайтесь!
| Ссылка: | Настройте локальный репозиторий Nexus и разверните файл WAR от Maven от нашего партнера по JCG Аруна Гупта в блоге Miles to go 2.0… . |

