[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-kak-nastroit-gradle-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},209,"kak-nastroit-gradle-dlya-raboty-s-nexus",6,"ci-cd","CI\u002FCD","🔄","Как настроить Gradle для работы с Nexus?","**Настройка Gradle для Nexus** — это конфигурация блоков `repositories` (откуда скачивать зависимости) и `publishing` (куда публиковать артефакты) в файле `build.gradle` или `build.gradle.kts`.\n\n### 1. Скачивание зависимостей из Nexus\n\n```groovy\nrepositories {\n    maven {\n        url 'https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-public\u002F'\n        credentials {\n            username = project.findProperty('nexusUser') ?: System.getenv('NEXUS_USER')\n            password = project.findProperty('nexusPass') ?: System.getenv('NEXUS_PASS')\n        }\n        allowInsecureProtocol = false  \u002F\u002F Требовать HTTPS\n    }\n}\n```\n\nУчётные данные берутся из `gradle.properties` (локальная разработка) или переменных окружения (CI\u002FCD).\n\n### 2. Публикация артефактов в Nexus\n\n\u003Cdetails>\n\u003Csummary>Полный пример конфигурации публикации (build.gradle)\u003C\u002Fsummary>\n\n```groovy\nplugins {\n    id 'java'\n    id 'maven-publish'\n}\n\npublishing {\n    publications {\n        mavenJava(MavenPublication) {\n            from components.java\n            groupId = 'com.company'\n            artifactId = 'my-service'\n            version = '1.0.0'\n        }\n    }\n    repositories {\n        maven {\n            name = 'nexus'\n            def releasesUrl = 'https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-releases\u002F'\n            def snapshotsUrl = 'https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-snapshots\u002F'\n            url = version.endsWith('SNAPSHOT') ? snapshotsUrl : releasesUrl\n            credentials {\n                username = project.findProperty('nexusUser') ?: System.getenv('NEXUS_USER')\n                password = project.findProperty('nexusPass') ?: System.getenv('NEXUS_PASS')\n            }\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### 3. Файл `gradle.properties` (только для локальной разработки)\n\n```properties\nnexusUser=developer\nnexusPass=secret\n```\n\n**Важно:** этот файл **нельзя коммитить в Git!** Добавьте его в `.gitignore`.\n\n### 4. Kotlin DSL (`build.gradle.kts`)\n\n```kotlin\nrepositories {\n    maven {\n        url = uri(\"https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-public\u002F\")\n        credentials {\n            username = findProperty(\"nexusUser\")?.toString() ?: System.getenv(\"NEXUS_USER\")\n            password = findProperty(\"nexusPass\")?.toString() ?: System.getenv(\"NEXUS_PASS\")\n        }\n    }\n}\n```\n\n### Сравнение Maven и Gradle в контексте настройки Nexus\n\n| Аспект | Maven | Gradle |\n|---|---|---|\n| Файл учётных данных | `settings.xml` (отдельный файл) | `gradle.properties` или env |\n| Конфигурация загрузки | `\u003Cmirrors>` в `settings.xml` | `repositories {}` в `build.gradle` |\n| Конфигурация публикации | `\u003CdistributionManagement>` в `pom.xml` | `publishing {}` в `build.gradle` |\n| Плагин публикации | Встроен (`mvn deploy`) | `maven-publish` |\n| Команда публикации | `mvn deploy` | `gradle publish` |\n\n### Команда для публикации\n\n```bash\ngradle publish -PnexusUser=$NEXUS_USER -PnexusPass=$NEXUS_PASS\n```\n\n### Вывод\n\nНастройка Gradle-Nexus проще, чем Maven-Nexus, так как вся конфигурация находится в одном файле (`build.gradle`). Однако принцип тот же: учётные данные не хранятся в коде, а передаются через свойства проекта или переменные окружения.\n\n> **На собеседовании:** если спрашивают про разницу настройки Maven и Gradle для Nexus, отметьте, что в Maven credentials вынесены в отдельный `settings.xml`, а в Gradle всё в `build.gradle` с передачей секретов через properties\u002Fenv. Оба подхода требуют одного: **секреты не в Git**.","","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]