如何通过gradle任务将jar发布到互联网上的某个地方?
问题描述:
我有一个使用CI和gradle构建的项目,我想添加一个gradle任务来发布一个jar,我们可以在每次CI构建运行时访问它。如何通过gradle任务将jar发布到互联网上的某个地方?
我甚至不知道(或关心)我将要上传的服务;任何工作。
答
你可以使用某种神器ory,像sonatype nexus或jfrog artifactory。他们是一个很好的CI架构的主要博客。
https://www.jfrog.com/article/continuous-integration-systems/
答
可以发布到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跳砸发布。