2014-11-20 1 views
13

에서 Artifactory 내 build.gradle :출판 단지 모두와 소스 항아리는 여기 Gradle을

  • 내가 gradle clean build groovydoc sourcesJar dist을 실행해야 내 JAR를 빌드하려면 다음
  • 이 현재 설정을 바탕으로

    buildscript { 
        repositories { 
         maven { 
          url 'http://localhost:8081/artifactory/plugins-release' 
          credentials { 
           username = "admin" 
           password = "password" 
          } 
          name = "maven-main-cache" 
         } 
        } 
        dependencies { 
         classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1" 
        } 
    } 
    
    apply plugin: 'groovy' 
    apply plugin: 'maven' 
    apply plugin: 'codenarc' 
    apply plugin: 'maven-publish' 
    apply plugin: "com.jfrog.artifactory" 
    
    version="0.0.2" 
    group = "mylib" 
    
    repositories { 
        mavenCentral() 
        add buildscript.repositories.getByName("maven-main-cache") 
        maven { 
         url "http://localhost:8081/artifactory/myapp-snapshots" 
        } 
    } 
    
    dependencies { 
        compile 'commons-validator:commons-validator:1.4.0' 
        testCompile 'junit:junit:4.11' 
    } 
    
    artifactory { 
        contextUrl = "http://localhost:8081/artifactory" 
        publish { 
         repository { 
          repoKey = 'myorg-snapshots' 
          username = "admin" 
          password = "password" 
          maven = true 
         } 
         defaults { 
          publications ('mavenJava') 
         } 
        } 
    } 
    
    publishing { 
        publications { 
         mavenJava(MavenPublication) { 
          from components.java 
         } 
        } 
    } 
    
    task sourcesJar(type: Jar, dependsOn: classes) { 
        classifier = 'sources' 
        from sourceSets.main.allSource 
    } 
    
    artifacts { 
        archives sourcesJar 
    } 
    
    task dist(type: Zip, dependsOn: build) { 
        classifier = 'buildreport' 
    
        from('build/test-results') { 
         include '*.xml' 
         into 'tests' 
        } 
    
        from('build/reports/codenarc') { 
         into 'reports' 
        } 
    
        from('build/docs') { 
         into 'api' 
        } 
    
        from(sourcesJar) { 
         into 'source' 
        } 
    
        from('build/libs') { 
         exclude '*-sources.jar' 
         into 'bin' 
        } 
    } 
    

  • Artifactory에 게시하려면 gradle artifactoryPublish
의 두 번째 명령을 실행해야합니다. 여기 변경을 찾고 있어요 1,363,210

두 가지 :

  1. gradle artifactoryPublish는 단지 내 건설 JAR와 Artifactory하는 동적으로 생성 된 POM을 게시합니다. 내 빌드가 만드는 소스 JAR도 게시하고 싶습니다. 어떻게?; 그리고
  2. 이상적으로 나는 2 개의 명령을 순차적으로 실행하지 않고 gradle publish을 호출함으로써 위의 모든 작업을 수행 할 수 있습니다. 이것이 가능합니까? 그렇다면 어떻게?
+0

내 대답을 확인하고 작동하는지 확인하십시오. – Opal

답변

15

당신이 다음과 같은 방법으로 스크립트를 수정해야하는 출판 소스에 관해서 :

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
      artifact (sourcesJar) { 
       classifier = 'sources' 
      } 
     } 
    } 
} 

당신이해야 할 일을 하나의 명령에 관해서 작업 사이의 의존성을 정의하는 것입니다. 불행히도 스크립트를 중복해서 사용할 수 없으므로 작업을 수행해야합니다.

artifactoryPublish.dependsOn('clean', 'build', 'groovydoc', 'sourcesJar', 'dist') 
publish.dependsOn(artifactoryPublish) 
+0

'이상한 이유로'artifactoryPublish'에 'clean'을 추가하면 빌드하고, 정리하고, 게시하려고 시도합니다. 이제 더 이상 게시 할 것이 없으므로 분명히 실패합니다. 어떻게하면 다른 모든 것보다 먼저 '깨끗한'상태가되게 할 수 있습니까? – agent154

+0

해결책은 (최선인지 아닌지는 모르지만) 다음을 사용하는 것입니다.'compileJava.dependsOn ('clean')' – agent154

+0

'artifactoryPublish'는 내부적으로 의존성을 정의 할 수 있습니다. 내일 확인하겠습니다. – Opal