[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-kak-nastroit-maven-dlya-raboty-s-nexus":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},208,"kak-nastroit-maven-dlya-raboty-s-nexus",6,"ci-cd","CI\u002FCD","🔄","Как настроить Maven для работы с Nexus?","**Настройка Maven для Nexus** — это конфигурация двух файлов: `settings.xml` (учётные данные и зеркала) и `pom.xml` (адреса для публикации артефактов), обеспечивающая скачивание зависимостей из Nexus и загрузку артефактов в Nexus.\n\n### Общая схема\n\n```\nsettings.xml (credentials + mirror)  →  Maven  →  Nexus (maven-public)\npom.xml (distributionManagement)     →  Maven  →  Nexus (maven-releases \u002F maven-snapshots)\n```\n\n### 1. Файл `settings.xml`\n\nОбычно располагается в `~\u002F.m2\u002Fsettings.xml` или предоставляется Jenkins через Config File Provider.\n\n\u003Cdetails>\n\u003Csummary>Полный пример settings.xml\u003C\u002Fsummary>\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Csettings xmlns=\"http:\u002F\u002Fmaven.apache.org\u002FSETTINGS\u002F1.2.0\"\n          xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n          xsi:schemaLocation=\"http:\u002F\u002Fmaven.apache.org\u002FSETTINGS\u002F1.2.0\n          https:\u002F\u002Fmaven.apache.org\u002Fxsd\u002Fsettings-1.2.0.xsd\">\n\n    \u003C!-- Учетные данные для Nexus -->\n    \u003Cservers>\n        \u003Cserver>\n            \u003Cid>nexus-releases\u003C\u002Fid>\n            \u003Cusername>${env.NEXUS_USER}\u003C\u002Fusername>\n            \u003Cpassword>${env.NEXUS_PASS}\u003C\u002Fpassword>\n        \u003C\u002Fserver>\n        \u003Cserver>\n            \u003Cid>nexus-snapshots\u003C\u002Fid>\n            \u003Cusername>${env.NEXUS_USER}\u003C\u002Fusername>\n            \u003Cpassword>${env.NEXUS_PASS}\u003C\u002Fpassword>\n        \u003C\u002Fserver>\n    \u003C\u002Fservers>\n\n    \u003C!-- Зеркало: все запросы идут через Nexus -->\n    \u003Cmirrors>\n        \u003Cmirror>\n            \u003Cid>nexus\u003C\u002Fid>\n            \u003CmirrorOf>*\u003C\u002FmirrorOf>\n            \u003Curl>https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-public\u002F\u003C\u002Furl>\n        \u003C\u002Fmirror>\n    \u003C\u002Fmirrors>\n\n    \u003Cprofiles>\n        \u003Cprofile>\n            \u003Cid>nexus\u003C\u002Fid>\n            \u003Crepositories>\n                \u003Crepository>\n                    \u003Cid>nexus-public\u003C\u002Fid>\n                    \u003Curl>https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-public\u002F\u003C\u002Furl>\n                    \u003Creleases>\u003Cenabled>true\u003C\u002Fenabled>\u003C\u002Freleases>\n                    \u003Csnapshots>\u003Cenabled>true\u003C\u002Fenabled>\u003C\u002Fsnapshots>\n                \u003C\u002Frepository>\n            \u003C\u002Frepositories>\n            \u003CpluginRepositories>\n                \u003CpluginRepository>\n                    \u003Cid>nexus-public\u003C\u002Fid>\n                    \u003Curl>https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-public\u002F\u003C\u002Furl>\n                \u003C\u002FpluginRepository>\n            \u003C\u002FpluginRepositories>\n        \u003C\u002Fprofile>\n    \u003C\u002Fprofiles>\n\n    \u003CactiveProfiles>\n        \u003CactiveProfile>nexus\u003C\u002FactiveProfile>\n    \u003C\u002FactiveProfiles>\n\u003C\u002Fsettings>\n```\n\n\u003C\u002Fdetails>\n\n### 2. Файл `pom.xml` — секция `distributionManagement`\n\nОпределяет, куда Maven будет публиковать артефакты при выполнении `mvn deploy`:\n\n```xml\n\u003CdistributionManagement>\n    \u003Crepository>\n        \u003Cid>nexus-releases\u003C\u002Fid>\n        \u003Cname>Nexus Releases\u003C\u002Fname>\n        \u003Curl>https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-releases\u002F\u003C\u002Furl>\n    \u003C\u002Frepository>\n    \u003CsnapshotRepository>\n        \u003Cid>nexus-snapshots\u003C\u002Fid>\n        \u003Cname>Nexus Snapshots\u003C\u002Fname>\n        \u003Curl>https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-snapshots\u002F\u003C\u002Furl>\n    \u003C\u002FsnapshotRepository>\n\u003C\u002FdistributionManagement>\n```\n\n### Связь между settings.xml и pom.xml\n\nЗначения `\u003Cid>` в `distributionManagement` (`pom.xml`) **должны совпадать** с `\u003Cid>` в `\u003Cservers>` (`settings.xml`) — так Maven понимает, какие учётные данные использовать для конкретного репозитория.\n\n```\npom.xml:  \u003Cid>nexus-releases\u003C\u002Fid>   ←→   settings.xml: \u003Cserver>\u003Cid>nexus-releases\u003C\u002Fid>\n```\n\n### Команда для публикации\n\n```bash\nmvn deploy -s \u002Fpath\u002Fto\u002Fsettings.xml\n```\n\n### Использование в Jenkins\n\n```groovy\nstage('Deploy to Nexus') {\n    steps {\n        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {\n            sh 'mvn deploy -DskipTests -s $MAVEN_SETTINGS'\n        }\n    }\n}\n```\n\n### Вывод\n\nНастройка Maven-Nexus сводится к трём вещам: учётные данные в `settings.xml`, зеркало для скачивания зависимостей и `distributionManagement` в `pom.xml` для публикации. Главное — совпадение `\u003Cid>` между файлами.\n\n> **На собеседовании:** могут спросить, где хранить учётные данные для Nexus. Правильный ответ: **никогда в pom.xml** (он коммитится в Git). Только в `settings.xml`, который предоставляется через Jenkins Config File Provider или через переменные окружения.","","middle",[15,16,17,18,19,20],"mirror","nexus","distributionManagement","settings.xml","maven","deploy",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":36,"featuredSnippetReady":37},"Как настроить Maven для работы с Nexus — Gymterview","Настройка Maven и Nexus: settings.xml (servers, mirrors, profiles), distributionManagement в pom.xml, команда mvn deploy. Полные примеры конфигурации.","Настройка Maven для работы с Nexus: settings.xml и pom.xml — Gymterview","Полная конфигурация Maven для Nexus: settings.xml с серверами и зеркалами, distributionManagement в pom.xml, публикация артефактов.",[29,18,17,30,31,32,33,34,35],"Maven Nexus настройка","mirror Maven","mvn deploy","nexus-releases","nexus-snapshots","maven-public","Java CI\u002FCD","Настраиваются два файла: settings.xml (servers — учетные данные для nexus-releases и nexus-snapshots, mirrors — mirrorOf=* направляет все запросы через Nexus maven-public, profiles — URL репозиториев) и pom.xml (distributionManagement — URL для публикации releases и snapshots). Значения id в distributionManagement должны совпадать с id в servers. Публикация: mvn deploy -s \u002Fpath\u002Fto\u002Fsettings.xml. В Jenkins settings.xml предоставляется через Config File Provider.",true]