GradleからNexusに成果物を公開する
TL;DR
- Gradle 4, Nexus 3を前提とする。
- Gradleに標準で含まれる
maven-publishプラグインを利用してNexusに成果物を公開できる。追加のプラグインは必要ない。 - Gradleの
repositoriesブロックでNexusのリポジトリURLを指定する。成果物の公開、取得ともに同じ書き方でよい。
成果物の公開
Nexusに成果物を公開するには、Gradleに標準で含まれる maven-publish プラグインを利用する。ビルドスクリプトは以下のようになる。
plugins {
id 'java'
id 'maven-publish'
}
version = '1.0.0'
group = 'com.example'
publishing {
repositories {
maven {
url 'https://nexus.example.com/repository/maven-releases/'
credentials {
username = System.getenv('NEXUS_USERNAME') // CIで環境変数を設定する
password = System.getenv('NEXUS_PASSWORD') // CIで環境変数を設定する
}
}
}
}
成果物の公開をCIで行う場合、Nexusの認証情報はCIからGradleに環境変数で渡すとよい。Jenkinsfileの場合は以下のように書くと認証情報を環境変数に設定できる。
withCredentials([usernamePassword(credentialsId: '7117638a-d26b-4350-b28c-e360c327cca5', passwordVariable: 'NEXUS_PASSWORD', usernameVariable: 'NEXUS_USERNAME')]) { sh './gradlew publish' }
CircleCIやTravis CIの場合はビルドの設定画面から環境変数を設定すればよい。
成果物の取得
Nexusで公開されている成果物を利用するには先ほどと同様に repositories ブロックを記述すればよい。
repositories {
maven {
url 'https://nexus.example.com/repository/maven-releases/'
}
mavenCentral()
}
dependencies {
//...
}
Nexusの認証情報が必要な場合は先ほどと同様に credentials ブロックで設定できる。