kinjouj.github.io

gradleでartifactoryリポジトリを使う

2015-10-06T16:30:21+09:00 gradle artifactory Jenkins

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を構築して使うのは良さそう

gradleでtest時にheapdump ToolbarからSearchView ActionViewを取る方法