Android开发者经常发布自己的Android库到bintray,通常需要使用两个gradle插件:
这两个插件还要配合上好几个task,用于jar包的生成,POM文件的配置等,非常繁琐。
实际上,我们一般的开发者也就是关心几个小点,其他自动生成即可,所以,为了简化这两个插件的使用,我在他们两个的基础上进行了包装。大大简化了他们的使用。
| 本插件的版本 | gradle | android-gradle-plugin |
|---|---|---|
| 1.0.0 | <=5.0 | <=3.3.2 |
| 1.0.8 | >5.0 | <=3.3.2 |
| 1.0.14 | >5.0 | >=3.2.0 |
1、在settings.gradle.kts中配置Gradle Plugin Portal的镜像(非必须,只是为了加快下载速度):
pluginManagement {
repositories {
//https://maven.aliyun.com/mvn/view
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
}
}
2、在项目根目录中的build.gradle.kts中配置Android Gradle Plugin:
buildscript {
repositories {
google()
}
dependencies {
//https://developer.android.google.cn/studio/releases/gradle-plugin.html
classpath("com.android.tools.build:gradle:3.5.0")
}
}
3、在库模块的build.gradle.kts中应用插件:
//plugins块中加载的插件都托管在Gradle PLugin Portal中,或者已经在root build.gradle.kts中的classpath中配置好了
plugins {
id("com.android.library")
//https://github.com/leleliu008/BintrayUploadGradlePlugin
//https://plugins.gradle.org/plugin/com.fpliu.bintray
id("com.fpliu.bintray").version("1.0.14")
//用于构建jar和pom
//https://github.com/dcendents/android-maven-gradle-plugin
id("com.github.dcendents.android-maven").version("2.0")
//用于上传到jCenter中
//https://github.com/bintray/gradle-bintray-plugin
id("com.jfrog.bintray").version("1.7.3")
}
// 这里是groupId,必须填写,一般填你唯一的包名
group = "com.fpliu"
//这个是版本号,必须填写
version = "1.0.0"
val rootProjectName = rootProject.name
bintrayUploadExtension {
archivesBaseName = rootProjectName
developerName = "leleliu008"
developerEmail = "leleliu008@gamil.com"
projectSiteUrl = "https://github.com/$developerName/$rootProjectName"
projectGitUrl = "https://github.com/$developerName/$rootProjectName"
bintrayOrganizationName = "fpliu"
bintrayRepositoryName = "newton"
}
4、在$HOME/.bintray.properties中设置Bintray的用户和apiKey:
bintray.apikey=your bintray apiKey
bintray.user=your bintray user
这里这两个配置没有与其他配置放在一起,而是单独放到用户Home目录下,目的是防止不小心提交到GitHub等公共平台上。
1、在settings.gradle.kts中配置Gradle Plugin Portal的镜像(非必须,只是为了加快下载速度):
pluginManagement {
repositories {
//https://maven.aliyun.com/mvn/view
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
}
}
2、在库模块中的build.gradle.kts中应用插件:
//plugins块中加载的插件都托管在Gradle PLugin Portal中
plugins {
java
maven
//https://github.com/leleliu008/BintrayUploadGradlePlugin
//https://plugins.gradle.org/plugin/com.fpliu.bintray
id("com.fpliu.bintray").version("1.0.14")
//用于上传到jCenter中
//https://github.com/bintray/gradle-bintray-plugin
id("com.jfrog.bintray").version("1.7.3")
}
// 这里是groupId,必须填写,一般填你唯一的包名
group = "com.fpliu"
//这个是版本号,必须填写
version = "1.0.0"
val rootProjectName = rootProject.name
bintrayUploadExtension {
archivesBaseName = rootProjectName
developerName = "leleliu008"
developerEmail = "leleliu008@gamil.com"
projectSiteUrl = "https://github.com/$developerName/$rootProjectName"
projectGitUrl = "https://github.com/$developerName/$rootProjectName"
bintrayOrganizationName = "fpliu"
bintrayRepositoryName = "newton"
}
3、在$HOME/.bintray.properties中设置Bintray的用户和apiKey:
bintray.apikey=your bintray apiKey
bintray.user=your bintray user
这里这两个配置没有与其他配置放在一起,而是单独放到用户Home目录下,目的是防止不小心提交到GitHub等公共平台上。
执行此命令后在build目录下生成如下内容:
build
├── libs
│ ├── ${rootProjectName}-${version}-javadoc.jar
│ └── ${rootProjectName}-${version}-sources.jar
├── outputs
│ └── aar
│ └── ${rootProjectName}-${version}.aar
├── poms
│ └── pom-default.xml
└── ....
用此命令验证生成的内容是否符合您的需要。
这个命令还可以简化成./gradlew :library:bU,这就是上传到bintray的命令。当然,前提是您已经有了他的账户和仓库。
上面两个任务前面都加了:library,这是因为一般的工程都会包含至少两个子模块,一个一般是app或者是sample,另一个一般是library。从字面意思也可以知道,library模块就是编写我们要发布的库的,而app或者是sample是用来编写示例代码的。
您的工程如果是单模块的,那么省略:library即可。
