Android:基于Gradle 7.0+(8.2、8.6)发布aar到maven仓库,使用maven-publish插件

maven插件与maven-publish插件的区别

maven插件适用于gradle1.0-6.2版本,6.2版本后该插件就被废弃了,推荐使用maven-publish插件。
maven-publis插件是在gradle 1.3 版本后开始支持的,使配置更加简洁。

maven-publis插件的使用

砍柴不误磨刀工,我们先来看一下官方文档。

The Maven Publish Plugin

完整示例

下面配置展示如何签署和发布 Java 库,包括源代码、Javadoc 和自定义 POM:

plugins {id 'java-library'id 'maven-publish'id 'signing'
}group = 'com.example'
version = '1.0'java {withJavadocJar()withSourcesJar()
}publishing {publications {mavenJava(MavenPublication) {artifactId = 'my-library'from components.javaversionMapping {usage('java-api') {fromResolutionOf('runtimeClasspath')}usage('java-runtime') {fromResolutionResult()}}pom {name = 'My Library'description = 'A concise description of my library'url = 'http://www.example.com/library'properties = [myProp: "value","prop.with.dots": "anotherValue"]licenses {license {name = 'The Apache License, Version 2.0'url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'}}developers {developer {id = 'johnd'name = 'John Doe'email = 'john.doe@example.com'}}scm {connection = 'scm:git:git://example.com/my-library.git'developerConnection = 'scm:git:ssh://example.com/my-library.git'url = 'http://example.com/my-library/'}}}}repositories {maven {// change URLs to point to your repos, e.g. http://my.org/repodef releasesRepoUrl = layout.buildDirectory.dir('repos/releases')def snapshotsRepoUrl = layout.buildDirectory.dir('repos/snapshots')url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl}}
}signing {sign publishing.publications.mavenJava
}javadoc {if(JavaVersion.current().isJava9Compatible()) {options.addBooleanOption('html5', true)}
}

结果将发布以下工件:

  • POM:my-library-1.0.pom

  • Java 组件的主要 JAR 工件:my-library-1.0.jar

  • 已显式配置的源 JAR 工件:my-library-1.0-sources.jar

  • 已显式配置的 Javadoc JAR 工件:my-library-1.0-javadoc.jar

签名插件用于为每个工件生成签名文件。此外,将为所有工件和签名文件生成校验和文件。

publishToMavenLocal` 不会在$USER_HOME/.m2/repository.如果您想验证校验和文件是否已正确创建,或将其用于以后发布,请考虑使用 URL 配置自定义 Maven 存储库file://并将其用作发布目标。

当然有些配置你不需要,可以删除,比如删除下面配置:

id 'signing'

下面是我项目中 使用的配置,当然pom的配置你可以继续跟进需要进行删减。

group = 'cn.rock.spi'
version = '0.0.1'java {withJavadocJar()withSourcesJar()
}//gradle 官方文档:https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example
publishing {publications {mavenJava(MavenPublication) {artifactId = 'serviceloader'from components.javaversionMapping {usage('java-api') {fromResolutionOf('runtimeClasspath')}usage('java-runtime') {fromResolutionResult()}}pom {name = 'serviceloader library'description = 'A concise description of my library'url = 'http://www.baidu.com/library'properties = [myProp: "value","prop.with.dots": "anotherValue"]licenses {license {name = 'The Apache License, Version 2.0'url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'}}developers {developer {id = 'johnd'name = 'John Doe'email = 'john.doe@example.com'}}scm {connection = 'scm:git:git://example.com/my-library.git'developerConnection = 'scm:git:ssh://example.com/my-library.git'url = 'http://baidu.com/my-library/'}}}}repositories {maven {url = uri('../repo')println("maven url $url")}}
}

从上图可以看出生成了doc文件和source文件,是因为下面的配置:

java {withJavadocJar()withSourcesJar()
}

maven-publish可以用的配置

一、下面是精简后的配置(基于官方推荐版本):
group = 'cn.rock.spi'
version = '0.0.1'publishing {publications {mavenJava(MavenPublication) {artifactId = 'serviceloader'from components.java}}repositories {maven {url = uri('../repo')}}
}
发布插件

这个时候,点击下Sync同步下代码,然后可以在右侧GradleTab中,找到publishing,里面有publish选项,我们双击它,就开始执行发布插件的操作了。

如果你的Android Studio 在配置后没有publishing的task,可以尝试clean下重新build。

如果还是不行,不要怀疑配置有问题,mac电脑有时候会出现这种问题,换window电脑马上就有这个task了。

第二种配置

如果你比较喜欢恋旧,下面的配置也是可以的。

afterEvaluate {publishing {//配置maven-publishing插件的输出物publications {mavenJava(MavenPublication) {groupId = 'cn.rock.spi'artifactId = 'serviceloader'version = '0.0.1'from components.java}}repositories {maven {url = uri('../repo')}}}
}

注意:

使用mavenJava(MavenPublication)

引用:


dependencies {implementation 'cn.rock.spi:serviceloader:0.0.1'
}

完整demo:

https://github.com/jdsjlzx/spi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:二叉树的序列化和反序列化(序列和二叉树结构一一对应)

文章目录 一、基础知识1.1 序列化和反序列基础知识1.2 string与int转化STL函数 二、详解说明2.1 基于前序遍历的序列化和反序列化2.2 基于后序遍历的序列化和反序列化2.3 基于层序遍历的序列化和反序列化 三、例题——652. 寻找重复的子树 三个相同题目: 297. 二叉树…

Pencils Protocol Season 2 收官在即,Season 3 携系列重磅权益来袭

此前Scroll生态LaunchPad &聚合收益平台Pencils Protocol(原Penpad),推出了首个资产即其生态代币PDD的Launch,Season 2活动主要是用户通过质押ETH代币、组件战队等方式,来获得Point奖励,并以该Point为依…

C++那些事之Mixin惯用法

C那些事之Mixin惯用法 大家好,我是光城,今天给大家分享C那些事里面的一个惯用法:mixin 混合(Mixins)是Lisp中的一个概念。混合是类的一部分,意味着它旨在与其他类或混合组合在一起。常规独立类(…

C++学习~~string类

1.STL简单介绍 (1)标准模版库,是C里面的标准库的一部分,C标准库里面还有其他的东西,但是我们不经常使用,我们经常使用的还是STL这个标准库部分。 (2)六大件:仿函数&…

内网安全工具之ADExplorer的使用

ADExplorer是域内一款信息查询工具,它是独立的可执行文件,无需安装。它能够列出域组织架构、用户账号、计算机账号登,可以帮助寻找特权用户和数据库服务器等敏感目标。 下载地址:http://live.sysinternals.com/ 连接 下载了ADE…

SSM宠物管理系统-计算机毕业设计源码56932

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对宠物管理系统等问题,对宠物管理…

使用Docker在阿里云ECS上部署Gitlab,提供代码托管、CICD 和 docker镜像服务

文章目录 使用Docker在阿里云ECS上部署Gitlab1.购买一个数据,挂载到/data用于存储gitlab相关数据2. 部署docker引擎3. 调整ssh的默认端口,将22端口留给gitlab4. 部署gitlab5. 进入docker容器获取gitlab的默认密码6. 登录gitlab,完成gitlab-ru…

Spring Boot代码案例(计算器、登录、留言板)

文章目录 一、计算器二、登录2.1 判断账号密码是否正确2.2 根据不同的用户作出不同反应 三、留言板3.1 提交数据3.2 展示所有数据 四、Lombok 工具包4.1 场景介绍4.2 如何使用 五、Edit Starters插件六、项目如何Debug七、项目命名规范 一、计算器 导入前端文件后端代码&#…

Risk Of Rain 雨中冒险2服务器开服联机教程

1、购买后登录服务器(百度莱卡云) 1.1、第一次购买服务器会安装游戏端,大约5分钟左右,如果长时间处于安装状态请联系客服 2、设置游戏端口 由于雨中冒险2的设置需要两个端口,它们用于游戏端口,查询端口&am…

理解 Python 中的 `super()` 与 `__init__()` 方法

在 Python 的面向对象编程中,super() 函数和 __init__() 方法是两个非常重要的概念。它们在类的继承和初始化过程中扮演着关键的角色。本文将深入探讨这两个概念的工作原理,并通过示例代码来展示它们的使用。 基本原理 __init__() 方法 __init__() 是…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题: Cluster Master node Worker node k8s …

Vitis HLS 学习笔记--资源绑定-使用URAM(1)

目录 1. 简介 2. 代码分析 2.1 存储器代码 2.2 Implementation报告 2.3 存储器类型指定 2.4 存储器初始化 3. 总结 1. 简介 在博文《Vitis HLS 学习笔记--资源绑定-使用URAM-CSDN博客》中,介绍了如何在Vitis HLS环境下设计一个简易的存储器模型。 通过以下…