在Android项目中,使用Gradle插件和maven-publish
插件发布所有风格的变体(Build Variants)到Maven仓库是一个常见的需求。以下是一个详细的步骤指南,展示了如何配置你的build.gradle
文件以实现这一目标。
maven-publish
插件。在你的build.gradle
文件中应用必要的插件。
plugins {
id 'com.android.library'
id 'maven-publish'
}
配置你的Android模块,包括buildTypes
和productFlavors
。
android {
compileSdkVersion 30
defaultConfig {
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
// Debug-specific configurations
}
}
productFlavors {
flavor1 {
dimension "version"
}
flavor2 {
dimension "version"
}
}
}
maven-publish
插件配置maven-publish
插件以发布所有变体。
afterEvaluate {
publishing {
publications {
android.libraryVariants.all { variant ->
def variantName = variant.name.capitalize()
def publicationName = "maven${variantName}"
create(publicationName, MavenPublication) {
from components.findByName(variant.name)
groupId = 'com.example'
artifactId = 'my-library'
version = variant.versionName
// 添加源代码和Javadoc
artifact tasks["bundle${variantName}Aar"]
artifact tasks["generate${variantName}SourcesJar"]
artifact tasks["generate${variantName}JavadocJar"]
}
}
}
repositories {
maven {
url = uri("file://${buildDir}/maven-repo")
}
}
}
}
为了发布源代码和Javadoc,你需要添加生成这些工件的任务。
android.libraryVariants.all { variant ->
def variantName = variant.name.capitalize()
task("generate${variantName}SourcesJar", type: Jar) {
archiveClassifier.set('sources')
from android.sourceSets.main.java.srcDirs
}
task("generate${variantName}Javadoc", type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task("generate${variantName}JavadocJar", type: Jar, dependsOn: "generate${variantName}Javadoc") {
archiveClassifier.set('javadoc')
from tasks["generate${variantName}Javadoc"].destinationDir
}
}
运行以下命令发布所有变体到本地Maven仓库:
./gradlew publish
通过以上步骤,你可以使用Android Gradle插件和maven-publish
插件发布所有风格的变体到Maven仓库。这个配置包括:
buildTypes
和productFlavors
。maven-publish
插件以发布所有变体。北极星训练营
Elastic 中国开发者大会
618音视频通信直播系列
云+社区技术沙龙[第7期]
云+社区开发者大会(杭州站)
云+社区技术沙龙[第28期]
T-Day
Elastic 中国开发者大会
领取专属 10元无门槛券
手把手带您无忧上云