web-dev-qa-db-ja.com

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

私は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')
}

今では動作します。

ありがとう

72
tuncaysenturk

これは、publicationsがないためです。 artifactory-publishプラグインmaven-publishプラグイン で動作し、 publications をアップロードします。

古いMavenプラグイン を使用する場合は、artifactory-publishではなく artifactory plugin が必要です。

公式ドキュメントの 「Gradleの操作」ページの概要部分 をご覧ください。

48
JBaruch

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

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

プラグインが必要です:

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の設定:

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
2
grep

これは、コマンド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
        }
    }
}
1
gary69

パブリケーションを明示的に定義する代わりに、publishConfigsを使用することもできます。

artifactory {
    contextUrl = artifactoryUrl
    publish {
        repository {
            repoKey = 'libs-releases'
            username = artifactory_user
            password = artifactory_password
        }
        defaults {
            publishConfigs('archives')
        }
    }
}

そして、JARおよびPOMファイルを自動的に取得します。他のJAR(たとえば、ソースまたはjavadoc用)を作成する場合は、それらを構成archivesに追加するだけです。

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}
0
Helder Pereira