发布代码到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967
以下是基于 Android Studio 24.2.2(Gradle 8.10.2 + AGP 8.8.0 + JDK17) 的本地 Maven 仓库发布示例,包含aar和jar的不同配置:
1. 配置 build.gradle
文件
(1) 项目级 build.gradle
groovy
// 项目根目录 build.gradle
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
google()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.10" // 如果要编译javadoc,需要添加这个依赖
}
}
(2) 项目级 gradle.properties
(非必须)
groovy
// 项目根目录 gradle.properties 中添加JDK17配置(也可以设置电脑的环境变量未JDK17)
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
(3) aar模块 build.gradle
groovy
// aar模块 build.gradle
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.maven.publish)
}
android {
namespace 'com.lois.aarlib'
compileSdk 35
defaultConfig {
minSdk 21
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
// 以下是本地构建配置,用于发布到maven仓库,显式声明发布配置(关键修复)
publishing {
singleVariant("release") {
// 显式声明发布配置
withSourcesJar()
// doc发布需要添加"org.jetbrains.dokka:dokka-gradle-plugin:1.9.10"插件
withJavadocJar()
}
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
}
// 发布配置
afterEvaluate {
try {
publishing {
publications {
release(MavenPublication) { // 定义发布名称(如 release 或 debug)
from components.release // Android库使用release变体
groupId = "com.github.luotengyuan.MavenTest" // 组 ID
artifactId = "AarLib" // 项目名称
version = "1.0.0" // 版本号
}
}
repositories {
maven {
url = uri("${rootProject.projectDir}/repository") // 动态路径配置
}
}
}
} catch (Exception e) {
println "发布配置失败: ${e.message}" // 添加错误处理
}
}
(4) jar模块 build.gradle
groovy
// jar模块 build.gradle
plugins {
id 'java-library'
alias(libs.plugins.maven.publish)
}
java {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
// 发布配置
afterEvaluate {
try {
publishing {
publications {
release(MavenPublication) { // 定义发布名称(如 release 或 debug)
from components.java // Java库使用
groupId = "com.github.luotengyuan.MavenTest" // 组 ID
artifactId = "JarLib" // 项目名称
version = "1.0.0" // 版本号
artifact sourcesJar // 添加源码发布配置
artifact docJar // 添加源码发布配置
}
}
repositories {
maven {
url = uri("${rootProject.projectDir}/repository") // 动态路径配置
}
}
}
} catch (Exception e) {
println "发布配置失败: ${e.message}" // 添加错误处理
}
}
tasks.register('sourcesJar', Jar) {
from sourceSets.main.allJava
archiveClassifier = 'sources'
}
tasks.register('docJar', Jar) {
dependsOn javadoc // 确保先执行javadoc任务
from javadoc.destinationDir // 使用javadoc生成的文档目录
archiveClassifier = 'javadoc' // 修改分类器标识
}
2. 发布到本地 Maven 仓库
在终端中执行以下命令,将 AAR 文件发布到本地仓库:
bash
./gradlew clean
./gradlew publish
发布后的文件结构
发布后再项目根目录多了一个 repository
文件夹,这就是本地仓库地址,结构如下:
3. 在其他项目中引用本地仓库
在需要引用该库的项目中,配置 build.gradle
文件:
(1) 添加本地仓库路径
在 setting.gradle 上添加仓库地址
groovy
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven {
url "file://E:/AS24WorkSpace/MavenLocalTest/repository"
}
google()
mavenCentral()
}
}
(2) 添加依赖
groovy
dependencies {
implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0'
implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0'
}