2015-11-23 25 views
5

Tôi đang tạo bản dựng gradle làm người dùng mới, nhưng trước đây tôi đã làm việc với maven.plugin phát hành gradle + plugin xuất bản maven

Tôi đang cố gắng để tái tạo các hành động của các plugin maven phát hành:

  • phiên bản Thay đổi chi nhánh chuẩn bị tung ra số (cam kết tại svn)
  • Tạo một thẻ (tại svn)
  • Triển khai việc phát hành thẻ trong Nexus OSS
  • phiên bản Thay đổi chi nhánh số Snapshot mới (cam kết tại svn)

Như bạn thấy, tôi đang sử dụng:

  • Nexus OSS như versioning kho
  • SVN như scm
  • Gradle (2,8)

Tôi đang cố gắng để đạt được mục tiêu của tôi với hai plugin này:

  1. Gradle-release Plugin:

    • Thay đổi phiên bản chi nhánh chuẩn bị tung ra số (cam kết tại svn)
    • Tạo một thẻ (tại svn)
    • Thay đổi phiên bản chi nhánh số Snapshot mới (cam kết tại svn)
    dòng

    Command: gradle phát hành

  2. Maven Publish Plugin để triển khai đến Nexus: dòng

    Command: gradle xuất bản

Bất kỳ ý tưởng làm thế nào tôi có thể tạo ra một thông cáo và tự động triển khai nó đến Nexus trong một shot?

Dưới đây là tôi build.gradle:

plugins { 
    id 'net.researchgate.release' version '2.3.4' 
} 

apply plugin: 'maven-publish' 


/*------------------------ 
----- PUBLISH PLUGIN ----- 
-------------------------- 
https://docs.gradle.org/current/userguide/publishing_maven.html 
--------------------------*/ 
publishing { 
    publications { 
     maven(MavenPublication) { 
      groupId mavenGroup 
      artifactId mavenArtifact 
      version version 

      from components.java 
     } 
    } 
    repositories { 
     maven { 
      if(project.version.endsWith('-SNAPSHOT')) { 
       url "${nexusUrl}/content/repositories/repo-snapshots" 
      } else { 
       url "${nexusUrl}/content/repositories/repo-releases" 
      } 
      credentials { 
       username nexusUsername 
       password nexusPassword 
      } 
     } 
    } 
} 

/*------------------------ 
----- RELEASE PLUGIN ----- 
-------------------------- 
https://github.com/researchgate/gradle-release 
--------------------------*/ 
release { 
    failOnCommitNeeded = false 
    failOnUnversionedFiles = false 

    scmAdapters = [ 
     net.researchgate.release.SvnAdapter 
    ] 
} 

Trả lời

9

Bạn cần phải thiết lập một sự phụ thuộc giữa hai nhiệm vụ. Điều này có thể được thực hiện bằng cách thêm dòng này trong build.gradle của bạn:

afterReleaseBuild.dependsOn publish 

Phiên bản plugin có hai nhiệm vụ đó là chính xác cho usecase hooking các nhiệm vụ khác trong quá trình phát hành, cụ thể là beforeReleaseBuildafterReleaseBuild. Nhiệm vụ này (và các phụ thuộc bạn đặt) được thực hiện trước hoặc tương ứng sau tác vụ build.

https://github.com/researchgate/gradle-release#custom-release-steps

Các vấn đề liên quan