当前位置: 首页 > news >正文

Android Studio 新版本Gradle通过JitPack发布Maven仓库示例

发布本地仓库示例:https://blog.csdn.net/loutengyuan/article/details/145938967

以下是基于 Android Studio 24.2.2(Gradle 8.10.2 + AGP 8.8.0 + JDK17) 的通过JitPack发布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) 设置JDK17变量

在项目的根目录添加 jitpack.yml 文件,内容如下:

jdk:
  - openjdk17

由于这里配置了jdk17变量,所以如果在gradle.properties有设置jdk的本地路径,JitPack编译的时候会找不到这个路径,所以这里必须关闭这个设置,本地编译必须将电脑的环境变量设置为JDK17。

// 关闭项目根目录 gradle.properties 中JDK17配置
# org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
(3) aar模块 build.gradle
// aar模块 build.gradle
plugins {
    alias(libs.plugins.android.library)
    id '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_11
        targetCompatibility JavaVersion.VERSION_11
    }
    // 以下是本地构建配置,用于发布到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
}

publishing {
    publications {
        release(MavenPublication) {
        	// 注:这里设置的groupId和artifactId和version等,在JitPack编译的时候不会用到,会被替换成 `com.github.User:Repo:Tag` 这样的样式
            groupId = 'com.lois.maven.test'
            artifactId = 'AarLib'
            version = '1.0'

            afterEvaluate {
                from components.release
            }
        }
    }
}
(4) jar模块 build.gradle
// jar模块 build.gradle
plugins {
    id 'java-library'
    id 'maven-publish'
}

java {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

publishing {
    publications {
        release(MavenPublication) {
        	// 注:这里设置的groupId和artifactId和version等,在JitPack编译的时候不会用到,会被替换成 `com.github.User:Repo:Tag` 这样的样式
            groupId = 'com.lois.maven.test'
            artifactId = 'JarLib'
            version = '1.3'

            afterEvaluate {
                from components.java
            }
        }
    }
}

2. 发布代码到github仓库

将工程代码提交到github仓库

然后创建一个Releases版本:
在这里插入图片描述

3. 编译发布仓库到JitPack平台

使用github的账号登录JitPack:https://jitpack.io/平台,然后输入代码仓库地址,点击Look Up后会自动编译。
在这里插入图片描述
编译发布成功后图标是绿色的,编译报错是红色的。
在这里插入图片描述
发布成功后就可以根据指示添加仓库使用了:
在这里插入图片描述

4. 在其他项目中引用本地仓库

在需要引用该库的项目中,配置 build.gradle 文件:

(1) 添加本地仓库路径

在 setting.gradle 上添加仓库地址

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url 'https://jitpack.io' }
        google()
        mavenCentral()
    }
}
(2) 添加依赖
dependencies {
    implementation 'com.github.luotengyuan.MavenJitpackTest:AarLib:1.3'
    implementation 'com.github.luotengyuan.MavenJitpackTest:JarLib:1.3'
}

示例代码:https://github.com/luotengyuan/MavenJitpackTest

相关文章:

  • unity lua属性绑定刷新
  • 【愚公系列】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
  • 【计算机网络】传输层协议(UDP TCP)
  • 如何用python画一棵分形树
  • java后端开发day23--面向对象进阶(四)--抽象类、接口、内部类
  • Chromium_src源码
  • 【uniapp-Vue3】beforeRegister在注册用户入库前设置初始用户
  • 第四章 数据库安全性
  • 如何配置redis.conf才能远程访问
  • GitHub 语析 - 基于大模型的知识库与知识图谱问答平台
  • AI辅助学习vue第十三章
  • 【SpringBoot】SpringBoot中分页插件(PageHelper)的使用
  • ESP32 S3开发笔记(环境搭建,成功烧录)
  • LDR6500 PD 协议芯片在不同设备中的应用场景
  • Tomcat异常日志中文乱码怎么解决
  • fastadmin 后台商品sku(vue)
  • 《SegFace: Face Segmentation of Long-Tail Classes》论文分享(侵删)
  • ⭐算法OJ⭐矩阵的相关操作【动态规划 + 组合数学】(C++ 实现)Unique Paths 系列
  • 【Groovy】流程控制
  • 初阶数据结构习题【3】(1时间和空间复杂度)——203移除链表元素
  • 品牌设计全案/seo培训学院官网
  • 西安有哪些网站建设公司/2345网址导航智能主板
  • appcms程序怎么做网站/网络推广的基本方法有哪些
  • 宿州微网站建设/小程序开发平台官网
  • 设计大师网站/搜索引擎公司排名
  • wordpress添加商品画廊/东莞seo优化团队