gradleでartifactoryリポジトリを使う
gradle(maven)に対応したパッケージ管理のOSSっていうのかね。artifactoryを使ってみた(実際にはgradleとかだけでなくRubyとかのライブラリとかも管理出来るっぽい
インストール
https://www.jfrog.com/open-source からダウンロード。今回はzipをダウンロード
そのままでも動かす事出来るんですが、既存するTomcatサーブレットコンテナ内にデプロイしたいのでwebappsにあるartifactory.warを既存するTomcatにデプロイする
※データベース関係はデフォルトだとderbyを使う模様。色々変える事も出来るみたいだけど今回はパス
リポジトリの作成
おそらくは作らなくてもパッケージをデプロイする事自体は出来る(libs-release-local等を使えば)。ちなみに作るとこんな感じになる
んまぁ作らなくてもイケるので今回はlibs-release-localを使う
パッケージのデプロイ
パッケージのデプロイはgradle pluginを使って行う事が可能
buildscript {
repositories {
maven {
url 'http://localhost:8080/artifactory/plugins-release'
credentials {
username = "admin"
password = "password"
}
}
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
}
}
apply plugin: "java"
apply plugin: "maven-publish"
apply plugin: "com.jfrog.artifactory"
group = 'sample'
version = '1.0'
repositories {
jcenter()
}
dependencies {
testCompile "junit:junit:4.11"
}
artifactory {
contextUrl = "http://localhost:8080/artifactory"
publish {
repository {
repoKey = "libs-release-local"
// artifactoryのデフォルトのユーザー名はadmin
username = "admin"
// artifactoryのデフォルトのパスワードはpassword
password = "password"
maven = true
}
defaults {
publications("sample")
publishArtifacts = true
publishPom = false
}
}
}
publishing {
publications {
sample(MavenPublication) {
from components.java
}
}
}
っていうようにbuild.gradleを定義。artifactory pluginを使うとartifactoryPublishが使えるようになるので
gradle clean test artifactoryPublish
な感じでデプロイすると
っていう感じでパッケージがデプロイされる。あとは使う側で
apply plugin: "java"
repositories {
jcenter()
maven {
url "http://localhost:8080/artifactory/libs-release-local"
}
}
dependencies {
testCompile "sample:sample:+"
testCompile "junit:junit:+"
}
な感じでrepositoriesにmavenでurlを与えてやればいい。んまぁ非常に使い方がざっくりとしてますが...
余談: Jenkinsでビルドする場合
Jenkins Artifactory Pluginがあるのでインストール
んでジョブを作成して設定でartifactoryを使う部分の情報を設定するが「gradleでartifactory pluginを使用している場合にJenkins Artifactory Pluginでも同様にプラグインを処理しようとする為にエラーになる」っていう件に関しては「Project uses the Artifactory Gradle Plugin」が入っているとJenkins側でもプラグインのロードをしようとするので、gradle側でもデプロイ出来るようにプラグインを使用する場合にはこちらをチェック入れておかないとビルドでエラーになる
あとはまぁ普通に適切に設定を行った上でビルドを実行すればJenkinsでビルドを行ってartifactoryにデプロイしてくれる
んまぁという感じでgradle(maven)で使う自社開発ライブラリの管理とかはartifactoryを構築して使うのは良さそう