马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
以下是基于 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 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
- // 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 文件发布到当地堆栈:
- ./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
发布代码到JitPack示例:
发布私有堆栈示例:
|