本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2015/04/26/only-sign-for-release/
Maven仓库是一个包含大量依赖库的地方,有时候我们需要发布自己的库到仓库。
仓库虽然对于发布的库的具体功能和作用没有太多要求,但是有一些强制要求是必须的。
发布的内容物可以是jar,aar等,但是都必须满足一下条件:
- Metadata(pom.xml)
- 签名
- source jar
- javadoc jar
Gradle自身包含了mvn插件和signing插件,所以整个工作还是比较简单的,大体配置如下:
signing {
required {
isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives")
}
signconfigurations.archives
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier ='javadoc'from'build/docs/javadoc'
}
task sourcesJar(type: Jar) {
classifier ='sources'fromsourceSets.main.allSource
}
如果是快照版本就会发布到snapshot仓库,否则就是staging库。
对于快照版本是不需要签名的,所以在操作中尽量快照版本不签名,一来是节约时间,二来是快照版本如果通过CI发布的,就可以省去很多事。
signing插件的配置中通过指定required来决定是否跳过签名。
可以通过以下代码来判断
ext.isReleaseVersion = !version.endsWith("SNAPSHOT") signing {
required {
isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives")
}
sign configurations.archives
}
当然如果你的CI中有特殊的环境变量,也可以加入判断中。
比如SnapCI中的环境变量有
$ exportSNAP_CI=true
$ exportCI=true
$ exportSNAP_CACHE_DIR=/var/go
$ exportLANG=en_US.UTF-8
$ exportLC_ALL=en_US.UTF-8
$ exportSNAP_WORKING_DIR=/var/snap-ci/repo
$ exportSNAP_PIPELINE_COUNTER=12
$ exportSNAP_STAGE_NAME=upload
$ exportSNAP_BRANCH=master
$ exportSNAP_COMMIT=768980f107b8757812f23a934979549e40977c3d
$ exportSNAP_COMMIT_SHORT=768980f
$ exportSNAP_TRACKING_PIPELINE=true
$ exportSNAP_INTEGRATION_PIPELINE=false
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2015/04/26/only-sign-for-release/