Gradleを使用してArtifactoryにアーティファクトをアップロードする


84

私はGradleとArtifactoryの初心者で、JARファイルをArtifactoryにアップロードしたいと思っています。

これが私のbuild.gradleファイルです:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'artifactory-publish'

groupId = 'myGroup'
version = '1.0'
def artifactId = projectDir.name
def versionNumber = version

artifactory {
    contextUrl = 'http://path.to.artifactory' // base artifactory url
    publish {
        repository {
            repoKey = 'libs-releases'   // Artifactory repository key to publish to
            username = 'publisher'      // publisher user name
            password = '********'       // publisher password
            maven = true
        }
    }
}

artifactoryPublish { 
    dependsOn jar
}

artifactoryPublishタスクを実行した後、以下に示すようにビルドは成功します。

> gradle artifactoryPublish  --stacktrace
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:artifactoryPublish
Deploying build info to: http://path.to.artifactory/api/build

BUILD SUCCESSFUL

Total time: 7.387 secs

ただし、ビルド情報以外はArtifactoryに送信されません。

どんな助けでも大歓迎です。

編集:

JBaruchが述べたように、私は追加しました

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

そしてデフォルトのセクションはアーティファクトタスクになります

defaults {
   publications ('mavenJava')
}

今では動作します。

ありがとう


2
非常に役立つ質問と更新をありがとう。私を助けた1つのメモ:ルートタスクだけでなく、defaults実際には内部に入ります。artifactory.publishartifactory
ライアンウォールズ2014年

3
私はブログでこれをまとめていますburansky.com/scala/...
ラドーBuransky

1
試してみると、次のようになりError:(x, 0) Could not find property 'java' on SoftwareComponentInternal set.ます。スクリプト全体を投稿していただけませんか。
Nimrod Dayan 2015年

gradleフォルダー(gradle / sample.jar)に配置したjarをアップロードするための上記のコードを記述しています。実行すると、ビルド情報のみがアップロードされていることがわかります。私には2つの疑問があります。まず、アップロードするjarをどこで指定しているのか、パスをどこにも指定していません。次に、artifaction.publishにデフォルトのセクションを書き込むと、エラーエラーが発生します:(82、0)タイプ「PublishingExtension」の拡張機能が存在しません。現在登録されている拡張機能の種類:[DefaultExtraPropertiesExtension、DefaultArtifactPublicationSet_Decorated ..解決策はありますか??
sver 2016年

apply plugin: 'maven'pomファイルが生成'apply plugin: 'maven-publish'され、jarファイルが公開されている限り。そして、私は持っている必要はありませんでしたpublishing.publications.mavenJava(MavenPublication) { from components.java }。しかし、あなたは持っている必要があります default {publications ('mavenJava'); publishConfigs('archives', 'published') }
ravikanth 2016

回答:


55

それはあなたが何も持っていないからですpublicationsartifactory-publishプラグインはで動作するmaven-publishプラグインとアップロードpublications

あなたがで作業を好む場合は、古いMavenプラグインは、次のものが必要artifactoryプラグイン、ありませんartifactory-publish

見てみましょう「ワーキングのGradleと」ページで概要一部公式ドキュメントのを。


5
こんにちはJBrauchご回答ありがとうございます。他の人が同じ問題を抱えているのを助けるために、不足している部分を投稿に追加しました。
tuncaysenturk 2014年

7
maven-publishドキュメントに言及がないので、アーティファクトの誰かが来ることを願っています...。@JBaruchの助けをありがとう!jfrog.com/confluence/display/RTF/…–
Ryan Walls

あなたは私「artfactoryから誰かを」検討することができます:)ここだ公式ドキュメントで説明。答えにそれを追加します。
jBaruch 2014年

5
@JBaruchは、リンクされた2つのページのどちらにも言及していませんmaven-publish。私は@Ryanに同意します。しかし、ここでの回答に感謝します
ハインリッヒフィルター

現在のドキュメントの例では、Android Studioのgradleプラグインv0.9を使用しています。これは完全に古く、非推奨です。最新のものはv1.5.0です。/:もちろん、例は、このバージョンでは動作しません
レミーDAVID

8

私はこれを機能させました。私は実際に作成済みのjarを使用していたので、以下のコードを使用して、アップロードするjarを指定しています。

publishing {
    publications {
        mavenJava(MavenPublication) {
            // from components.java
            artifact file("path/jar-1.0.0.jar")
        }
    }
}

7

プラグインが必要です:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

プロジェクトをビルドし、アーティファクトからjarを取得するには:

buildscript {
    repositories {
        maven {
            url 'http://[IP]:[PORT]/artifactory/gradle-dev'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
        mavenCentral()
    }
    dependencies { classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.5.4" }
}

repositories {
    mavenCentral()
    mavenLocal()
}

アーティファクトリー構成:

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'gradle-dev-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
        defaults {
            publications('mavenJava')
        }
        publishBuildInfo = true
        publishArtifacts = true
        publishPom = true
    }
    resolve {
        repository {
            repoKey = 'gradle-dev'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true

        }
    }
}

および公開用:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

gradle.properties

artifactory_user=publisher
artifactory_password=*****
artifactory_contextUrl=http://IP:PORT/artifactory

つまり、すべてが単純です。jarファイルをアップロードする場合:

gradle artifactoryPublish

4

これは私のためにコマンドで働いたものです gradle clean build publish

apply plugin: 'maven-publish'
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'maven'

group = 'com.mine'
version = '1.0.1-SNAPSHOT'

repositories{
    mavenCentral()
}

dependencies {
    compile gradleApi()
    compile localGroovy()
    compile 'com.google.guava:guava:27.0-jre'
    testCompile 'junit:junit:4.12'
    //compile 'org.apache.commons:commons-lang3:3.8.1'
}

publishing {
    repositories {
        maven {
            url = 'https://artifactory.mine.net/artifactory/my-snapshots-maven'
            credentials {
                username 'user'
                password 'password'
            }
        }
    }
    publications{
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.