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


84

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

이제 작동합니다.

감사


2
매우 유용한 질문과 업데이트에 감사드립니다. 나에게 도움이 된 한 가지 메모 는 루트 작업 뿐만 아니라 defaults실제로 안으로 들어갑니다 . artifactory.publishartifactory
Ryan Walls

3
나는 이것을 블로그에 요약했다 : buransky.com/scala/…
Rado Buransky 2014-08-16

1
내가 그것을 시도하면 얻을 : Error:(x, 0) Could not find property 'java' on SoftwareComponentInternal set.전체 스크립트를 게시 할 수 있습니까?
Nimrod Dayan 2015 년

내 gradle 폴더 (gradle / sample.jar)에 배치 한 jar를 업로드하기 위해 위의 코드를 작성 중입니다. 실행하고 빌드 정보 만 업로드되는 것을 확인합니다. 2 개의 의심이 있습니다. 첫째, 업로드 할 jar를 지정하는 위치는 어디에도 경로를 지정하지 않았습니다. 둘째, artifaction.publish에 기본 섹션을 작성하면 Error : (82, 0) Extension of type 'PublishingExtension'does not exist. 오류가 발생합니다. 현재 등록 된 확장 유형 : [DefaultExtraPropertiesExtension, DefaultArtifactPublicationSet_Decorated .. 모든 솔루션 ??
sver

등 우리가 가지고 apply plugin: 'maven'생성되는 치어 파일을 우리가있는 경우 'apply plugin: 'maven-publish'jar 파일이 게시됩니다. 그리고 저는 publishing.publications.mavenJava(MavenPublication) { from components.java }. 그러나 당신은 가지고 있어야합니다 default {publications ('mavenJava'); publishConfigs('archives', 'published') }
ravikanth

답변:


55

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

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

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


5
안녕하세요 JBrauch 귀하의 답변에 감사드립니다. 다른 사람들이 같은 문제를 가질 수 있도록 부족한 부분을 게시물에 추가했습니다.
tuncaysenturk

7
maven-publish문서에 언급이 없기 때문에 유물에서 누군가가 오길 바랍니다 . @JBaruch의 도움에 감사드립니다! jfrog.com/confluence/display/RTF/…
Ryan Walls

당신은 날 "artfactory에서 사람을"고려할 수 있습니다 :) 여기 공식 문서의 설명. 답변에 추가합니다.
JBaruch 2014 년

5
@JBaruch는 여전히 링크 된 두 페이지 중 어느 것도 언급하지 않습니다 maven-publish. 도움이 될 것이라고 @Ryan과 동의합니다. 그러나 여기에 답변 해 주셔서 감사합니다
Heinrich Filter

현재 문서 예제는 완전히 오래되고 더 이상 사용되지 않는 Android Studio Gradle 플러그인 v0.9를 사용하며 최신 버전은 v1.5.0입니다. 물론 예제는이 버전에서 작동하지 않습니다. /
Rémy DAVID

8

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

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

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

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.