發布代碼到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
// 項目根目錄 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
(非必須)
// 項目根目錄 gradle.properties 中添加JDK17配置(也可以設置電腦的環境變量未JDK17)
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
(3) aar模塊 build.gradle
// aar模塊 build.gradle
plugins {alias(libs.plugins.android.library)alias(libs.plugins.maven.publish)
}android {namespace 'com.lois.aarlib'compileSdk 35defaultConfig {minSdk 21testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"consumerProguardFiles "consumer-rules.pro"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}// 以下是本地構建配置,用于發布到maven倉庫,顯式聲明發布配置(關鍵修復)publishing {singleVariant("release") {// 顯式聲明發布配置withSourcesJar()// doc發布需要添加"org.jetbrains.dokka:dokka-gradle-plugin:1.9.10"插件withJavadocJar()}}
}dependencies {implementation libs.appcompatimplementation libs.materialtestImplementation libs.junitandroidTestImplementation libs.ext.junitandroidTestImplementation libs.espresso.core}// 發布配置
afterEvaluate {try {publishing {publications {release(MavenPublication) { // 定義發布名稱(如 release 或 debug)from components.release // Android庫使用release變體groupId = "com.github.luotengyuan.MavenTest" // 組 IDartifactId = "AarLib" // 項目名稱version = "1.0.0" // 版本號}}repositories {maven {url = uri("${rootProject.projectDir}/repository") // 動態路徑配置}}}} catch (Exception e) {println "發布配置失敗: ${e.message}" // 添加錯誤處理}
}
(4) jar模塊 build.gradle
// jar模塊 build.gradle
plugins {id 'java-library'alias(libs.plugins.maven.publish)
}java {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17
}// 發布配置
afterEvaluate {try {publishing {publications {release(MavenPublication) { // 定義發布名稱(如 release 或 debug)from components.java // Java庫使用groupId = "com.github.luotengyuan.MavenTest" // 組 IDartifactId = "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.allJavaarchiveClassifier = 'sources'
}tasks.register('docJar', Jar) {dependsOn javadoc // 確保先執行javadoc任務from javadoc.destinationDir // 使用javadoc生成的文檔目錄archiveClassifier = 'javadoc' // 修改分類器標識
}
2. 發布到本地 Maven 倉庫
在終端中執行以下命令,將 AAR 文件發布到本地倉庫:
./gradlew clean
./gradlew publish
發布后的文件結構
發布后再項目根目錄多了一個 repository
文件夾,這就是本地倉庫地址,結構如下:
3. 在其他項目中引用本地倉庫
在需要引用該庫的項目中,配置 build.gradle
文件:
(1) 添加本地倉庫路徑
在 setting.gradle 上添加倉庫地址
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {maven {url "file://E:/AS24WorkSpace/MavenLocalTest/repository"}google()mavenCentral()}
}
(2) 添加依賴
dependencies {implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0'implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0'
}
示例代碼:https://github.com/luotengyuan/MavenLocalTest