Как настроить Gradle для работы с Nexus?
Настройка Gradle для Nexus — это конфигурация блоков repositories (откуда скачивать зависимости) и publishing (куда публиковать артефакты) в файле build.gradle или build.gradle.kts.
1. Скачивание зависимостей из Nexus
Пример
repositories {
maven {
url 'https://nexus.company.com/repository/maven-public/'
credentials {
username = project.findProperty('nexusUser') ?: System.getenv('NEXUS_USER')
password = project.findProperty('nexusPass') ?: System.getenv('NEXUS_PASS')
}
allowInsecureProtocol = false // Требовать HTTPS
}
}
Учётные данные берутся из gradle.properties (локальная разработка) или переменных окружения (CI/CD).
2. Публикация артефактов в Nexus
Полный пример конфигурации публикации (build.gradle)
plugins {
id 'java'
id 'maven-publish'
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId = 'com.company'
artifactId = 'my-service'
version = '1.0.0'
}
}
repositories {
maven {
name = 'nexus'
def releasesUrl = 'https://nexus.company.com/repository/maven-releases/'
def snapshotsUrl = 'https://nexus.company.com/repository/maven-snapshots/'
url = version.endsWith('SNAPSHOT') ? snapshotsUrl : releasesUrl
credentials {
username = project.findProperty('nexusUser') ?: System.getenv('NEXUS_USER')
password = project.findProperty('nexusPass') ?: System.getenv('NEXUS_PASS')
}
}
}
}
3. Файл gradle.properties (только для локальной разработки)
Пример
nexusUser=developer
nexusPass=secret
Важно: этот файл нельзя коммитить в Git! Добавьте его в .gitignore.
4. Kotlin DSL (build.gradle.kts)
Пример
repositories {
maven {
url = uri("https://nexus.company.com/repository/maven-public/")
credentials {
username = findProperty("nexusUser")?.toString() ?: System.getenv("NEXUS_USER")
password = findProperty("nexusPass")?.toString() ?: System.getenv("NEXUS_PASS")
}
}
}
Сравнение Maven и Gradle в контексте настройки Nexus
| Аспект | Maven | Gradle |
|---|---|---|
| Файл учётных данных | settings.xml (отдельный файл) |
gradle.properties или env |
| Конфигурация загрузки | <mirrors> в settings.xml |
repositories {} в build.gradle |
| Конфигурация публикации | <distributionManagement> в pom.xml |
publishing {} в build.gradle |
| Плагин публикации | Встроен (mvn deploy) |
maven-publish |
| Команда публикации | mvn deploy |
gradle publish |
Команда для публикации
Пример
gradle publish -PnexusUser=$NEXUS_USER -PnexusPass=$NEXUS_PASS
Вывод
Настройка Gradle-Nexus проще, чем Maven-Nexus, так как вся конфигурация находится в одном файле (build.gradle). Однако принцип тот же: учётные данные не хранятся в коде, а передаются через свойства проекта или переменные окружения.
На собеседовании: если спрашивают про разницу настройки Maven и Gradle для Nexus, отметьте, что в Maven credentials вынесены в отдельный
settings.xml, а в Gradle всё вbuild.gradleс передачей секретов через properties/env. Оба подхода требуют одного: секреты не в Git.