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
ブロックで設定できる。