[gradle] Gradle을 사용하여 Artifactory에 아티팩트 업로드

저는 Gradle과 Artifactory의 초보자이며 Artifactory에 JAR 파일을 업로드하고 싶습니다.

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

이제 작동합니다.

감사



답변

당신이 어떤이없는 때문이다 publications. artifactory-publish플러그인이 작동 maven-publish플러그인 및 업로드 publications.

이전 maven 플러그인으로 작업 하려면 artifactory플러그인 이 필요 하지 않습니다 artifactory-publish.

공식 문서의 “Working with Gradle”페이지에서 개요 부분을 살펴보십시오 .


답변

나는이 일을했다. 실제로 이미 생성 된 항아리를 사용하고 있었으므로 아래 코드를 사용하여 업로드 할 항아리를 지정하고 있습니다.

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


답변

플러그인이 필요합니다.

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

그래서 모든 것이 간단합니다. 항아리를 업로드하려면 :

gradle artifactoryPublish


답변

이것은 명령으로 나를 위해 일한 것입니다. 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
        }
    }
}


답변