如何通过gradle任务将jar发布到互联网上的某个地方?

问题描述:

我有一个使用CI和gradle构建的项目,我想添加一个gradle任务来发布一个jar,我们可以在每次CI构建运行时访问它。如何通过gradle任务将jar发布到互联网上的某个地方?

我甚至不知道(或关心)我将要上传的服务;任何工作。

你可以考虑设置一个GitHub的仓库,只用于发布工件(你正在构建为GitHub releases

在gradle这个,你可以使用:

你可以使用某种神器ory,像sonatype nexus或jfrog artifactory。他们是一个很好的CI架构的主要博客。

https://www.jfrog.com/article/continuous-integration-systems/

https://www.sonatype.com/nexus-repository-sonatype

可以发布到bintray.com(从jfrog)。

这将会给你一个回购你可以使用像这样:

repositories { 
    maven { 
     url 'https://dl.bintray.com/yourOrg/yourRepo/' 
    } 
} 

然后,如果你对jcenter()库认真,自动同步仅仅是一个点击和批准了。

要通过gradle这个任务上传:

plugins { 
    id 'com.jfrog.bintray' version '1.7.3' 
} 
apply plugin: 'maven-publish' 

group 'com.example' //your group ID 
version '0.1'  //your version 

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

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

artifacts { 
    archives jar 
    archives sourcesJar //required for jcenter 
    archives javadocJar //required for jcenter 
} 

publishing { 
    publications { 
     MyPublication(MavenPublication) { 
      groupId group 
      artifactId 'Base58' 
      version project.version 
      //again, sources and javadoc required for jcenter 
      artifact("$buildDir/libs/projectName-${project.version}-sources.jar") { 
       classifier = 'sources' 
      } 
      artifact("$buildDir/libs/projectName-${project.version}-javadoc.jar") { 
       classifier = 'javadoc' 
      } 
      artifact("$buildDir/libs/projectName-${project.version}.jar") 
     } 
    } 
} 

// To upload a new version 
// ./gradlew clean 
// ./gradlew build bintrayUpload -Puser=user -Pkey=APIKEY 
bintray { 
    user = project.ext.properties.user 
    key = project.ext.properties.key 
    publications = ['MyPublication'] 
    pkg { 
     repo = 'YourBinTrayRepo' 
     name = 'YourBinTrayProjectName' 
     userOrg = 'YourBinTrayOrganizationIfApplicable' 
     licenses = //any licences applicable 
     vcsUrl = 'URL to source' 
     version project.version 
    } 
} 

所以上传:

./gradlew clean 
./gradlew build bintrayUpload -Puser=user -Pkey=APIKEY 

然后在bintray跳砸发布。