gradle7.0.2如何发布jitpack开源项目

2023-11-14

前言

gradle 可以说发展十分迅速,一下子就飙升 7.0.2 了。

当你想用 github + jitpack 发布自己的开源项目的时候,网上找的教程都是 基于gradle 3./4.版本的,里面还说道要依赖 android-maven-gradle-plugin 插件,殊不知这个插件已经被废弃了。下面,我就一步步教大家如何从0开始发布自己的 jitpack 开源项目。

说明:由于国内 github 网站不稳定,时不时访问不了,下面的案例我就以 gitee 来讲解,因为github 和 gitee 操作可以说没什么两样。

如何让别人在gradle中直接compile你的开源库_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/121575028

操作步骤

第一步:新建一个空的 Android 项目

创建好之后项目目录结构如下所示: 

第二步:创建 Android library

做到这一步:希望大家能明白,我们新建的项目中那个 app 其实一点用都没有,不用关心。我们的精力应该放在 我们新建的那个 Android Library 上。

第三步:编写库类

我们这个案例的作用主要是演示,所以我们写一个简单的库类 =》 弹出吐司。

package com.wust.toastlib;

import android.content.Context;
import android.widget.Toast;

/**
 * ClassName: yqTaostUtils <br/>
 * Description: <br/>
 * date: 2021/11/28 10:54<br/>
 *
 * @author yiqi<br />
 * @QQ 1820762465
 * @微信 yiqiideallife
 * @技术交流QQ群 928023749
 */
public class yqTaostUtils {

    private static Toast toast;

    public static void showToast(Context context) {
        if (toast == null) {
            toast = Toast.makeText(context, "我来自jitpack", Toast.LENGTH_LONG);
        }
        toast.show();
    }
}

到了这一步,我们的库就写好了,我们在本地测试一下是否能编译成。

第四步:本地编译

编译方法官方文档Android - JitPack.iohttps://jitpack.io/docs/ANDROID/

  • 唤起 terminal   

注意路径,因为我们要使用 gradlew 来实现编译。

  •  输入 编译命令
gradlew publishToMavenLocal

这一步会出现各种各样的 错误,我们依依来解决

错误一: Task 'publishToMavenLocal' not found in root project 'jitPackDemo'

解决方法:

在 \ToastLib\build.gradle 中加 task 即可

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                groupId = 'com.wustyq.ToastLib' //groupId 随便取
                artifactId = 'wustyq'  //artifactId 随便取
                version = '1.0.0'
            }
        }
    }
}

当你点击 sync now 时会报 问题二。 

问题二:Could not find method publishing()

解决方法

添加 一句 

id 'maven-publish'

这个时候 我们在 terminal 中再执行  

gradlew publishToMavenLocal

可以发现成功了。看见 BUILD SUCCESSFUL  说明本地编译成功。

第五步:发布在 gitee 并生成 realease 版本

注意:推荐大家使用 github ,根据经验 jitpack 和 github 搭配的更好

 项目推送到 gitee 我就不在此作说明,我们直接到项目推送到gitee上的这一步。

 点击 发行版 =》 创建 

填写信息并发布

 发布成功

第六步:前往 jitpack 上编译

jitpack官网JitPack | Publish JVM and Android librarieshttps://jitpack.io/

复制项目地址

粘贴地址 并 编译

 编译中,仅仅等待编译结果即可

大概等三四分钟就可以出结果,可惜的是,我们第一次失败了,不要担心我们来看看报错。

红色代表失败,点击即可查看报错日志

问题三: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

这个错误这一次是在 jitpack 平台上编译出的错误,又是也可能在 本地编译时就出错了

解决方法:

在  \ToastLib\build.gradle 中 把 compileOptions 节点 里的  VERSION_1_8 修改成 

compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
}

在项目根目录下新建一个 jitpack.yml 文件,里面配置 java11

before_install:
  - sdk install java 11.0.10-open
  - sdk use java 11.0.10-open

jdk:
  - openjdk11

然后 push 到 gitee 上重新 realease ,编译,后面解决报错都是这么一个步骤。

就是反复排错

感兴趣的同学可以试着看看编译报告,就会发现我们配置的指令是生效了的

经过三次编译,我们的库也是成功的发布了

点击 get it 就会告诉我们如何引用我们的库

下面,我们就新建一个项目来试试我们的库。

第七步:测试我们自己写的开源库

  • 新建一个测试项目

  • 导入依赖包

 Add it in your root build.gradle at the end of repositories:

译文:你的根目录的 build.gradle 中repositories节点 结尾处添加它

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

注意看我是加在那个地方了!!! 

如果你的地址加载错误就会报错,如下:

(由于中途我以为是库出错了,所以重新编译到了 1.0.5 ,你么继续1.0.2就好了,库没问题,配置仓库路径出了问题) 

Add the dependency

译文:在你的 module 下的  build.gradle 中添加依赖

dependencies {
	        implementation 'com.gitee.wustyq:test-jitpack:1.0.2'
	}

 点击 sync now

 可以看到,我们成功的导入了

  • 使用库类

我们就做一个按钮点击功能,调用我们库里面的 Toast 

package com.wust.testmyjitpack;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.wust.toastlib.yqTaostUtils;

public class MainActivity extends AppCompatActivity {

    private Button btn_show_toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_show_toast = findViewById(R.id.btn_show_toast);
        btn_show_toast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 使用我们的库
                yqTaostUtils.showToast(MainActivity.this);
            }
        });
    }
}

运行结果

开源代码: testJitpack: 测试 jitpack 开源库 (gitee.com)https://gitee.com/wustyq/test-jitpack

测试代码
yiqi/testMyJitpack - 码云 - 开源中国 (gitee.com)https://gitee.com/wustyq/test-my-jitpack

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gradle7.0.2如何发布jitpack开源项目 的相关文章

  • Mockito 在调用参数数量可变的方法时使用参数匹配器

    我试图在对具有可变数量参数的方法的调用中使用参数匹配器 Java 中的东西 没有成功 我的代码如下 我还将列出我尝试用来完成此工作的所有行 import static org mockito Mockito public class Met
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • 如何根据运行的 jar 的结果让我的 ant 任务通过或失败?

    我正在运行 CrossCheck 无浏览器 js 单元测试 作为 ant 脚本的一部分 如果 CrossCheck 测试失败 我希望 ant 报告失败 这是 build xml 中的相关部分
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 2022秋招笔试加面经合集,不区分公司,不定期更新

    9 9日mark 秋招陆陆续续开始 我自己的定位首先是国企然后是互联网企业 这里把面试和笔试整理下 攒人品 废话不多说开始 首先说一下简历吧 很多同学可能投后台 测试 算法都是一个简历 这样对自己来说是很方便 但是用通用的简历就会导致面试官
  • keil 4单片机程序的debug调试

    1 单击keil4窗口的调试按钮快捷图标 进入到软件模拟调试模式 如图所示 在软件调试模式下 可以设置断点 单步 全速 进入某个函数内部运行 还可以查看变量的变化过程 模拟硬件IO口电平变化 查看代码执行时间等 先了解一下调试按钮的功能 其
  • KMP算法详解(参考代码随想录)

    KMP算法详解 参考代码随想录 KMP的经典思想 当出现字符串不匹配时 可以记录一部分之前已经匹配的文本内容 利用这些信息避免从头再去做匹配 前缀表 前缀表是用来回退的 它记录了模式串与主串 文本串 不匹配的时候 模式串应该从哪里开始重新匹
  • 【每日一学】浮动IP

    在集群或者主备双机场景 对服务使用者而言期望的只有一个IP或域名 这个时候需要的就是浮动IP 一 主备实现 利用单个网卡绑定多个ip地址的技术和crontab自动执行技术 为主机的网卡多绑定一个静态ip 如124 158 26 32 这个地
  • MySQL锁定状态查看相关命令

    1 SHOW PROCESSLIST 显示哪些线程正在运行 只列出前100条 SHOW FULL PROCESSLIST 列出所有线程信息 如果您有SUPER权限 您可以看到所有线程 否则 您只能看到您自己的线程 也就是 与您正在使用的My
  • SpringBoot项目在logback.xml中读取配置中的日志路径问题

    一 问题 在SpringBoot项目 使用logback xml中配置日志的存储位置时 读取application properties或application yml中配置的路径 在logback xml中引用如下
  • PCB 经验

    1 CPU或是关键的IC放在PCB的board中间 目的是有足够空间布线 2 CPU和内寸之间走线一般要做等长走线 长度也要考虑是否够绕线 3 时钟芯片尽量靠近CPU 并远离其它敏感信号 4 CPU的复位电路尽量远离时钟以及其它高速信号 5
  • JS 闭包问题

    var result function foo1 var i 0 for i lt 3 i i 1 result i function j return function console log log 111 gt j i foo1 re
  • gtest里面的断言EXPECT_EQ和ASSERT_EQ的区别

    tips 主要用于记录工作中遇到的问题及解决方案 最近刚开始使用gtest 对里面的断言EXPECT EQ和ASSERT EQ的区别有疑惑 故记录下来 以备后续查看 TEST Binary test std string strPath O
  • Proxy error Could not proxy request错误解决

    原因 跨域 解决 package json文件中的scripts调试添加 start node index js server nodemon index js ignore client
  • 1787. 使所有区间的异或结果为零

    1787 使所有区间的异或结果为零 难度困难72 给你一个整数数组 nums 和一个整数 k 区间 left right left lt right 的 异或结果 是对下标位于 left 和 right 包括 left 和 right 之间
  • mysql触发器和存储过程

    mysql触发器和存储过程 什么是触发器 创建触发器 创建触发器的语法 BEGIN END 触发器经典案例 查看触发器 删除触发器 存储过程简介 mysql存储过程的创建 语法 参数 变量 变量赋值 注释 存储过程的管理 什么是触发器 触发
  • Retrofit统一异常处理

    一 杂谈 前一阵子博客备案因为名字问题被驳回了两次也是够了 现在在公司里一直写业务代码 这让本来就不会的算法的我算法水平更加烂 最近在跟着优酷上的一个小姐姐学魔方 智商跟不太上了啊哈哈哈哈哈 OK 步入正题 名字叫Retrofit异常处理
  • 向量点积与叉积等几何的定义及应用研究

    要计算两个向量的点积 需要将两个向量的对应分量相乘 然后再将乘积相加 下面这段代码可以计算出两个二维向量的点积 var dotProduct vectorOne x vectorTwo x vectorOne y vectorTwo y 计
  • 跟我学Java设计模式第4天:结构型模式大全

    5 结构型模式 5 6 组合模式 5 6 1 概述 对于这个图片肯定会非常熟悉 上图我们可以看做是一个文件系统 对于这样的结构我们称之为树形结构 在树形结构中可以通过调用某个方法来遍历整个树 当我们找到某个叶子节点后 就可以对叶子节点进行相
  • linux下进程绑定cpu情况查看

    linux下进程绑定cpu情况查看的几种方法 1 pidstat命令 查看进程使用cpu情况 如果绑定了多个cpu会都显示出来 pidstat p pidof 进程名 t 1 2 top命令 1 top 2 按f键可以选择下面配置选项 P
  • public void doGet(HttpServletRequest request, HttpServletResponse response)

  • 猿如意工具-【SwitchHosts】详情介绍

    一 什么是猿如意 在发表文章的契机下 看到了 猿如意 这个名词 处于好奇 点击进行了解 发现是我们熟悉的CSDN提供的一个面向开发者的辅助开发工具箱 猿如意的意思是 程序猿 员 的如意兵器 它提供效率工具 开发工具的下载 教程文档 代码片段
  • 【Vim】IdeaVim高级玩法之EasyMotion插件

    本文将介绍IDEA中的IdeaVim插件提供的EasyMotion拓展插件 什么是EasyMotion EasyMotion起源是Vim的一个插件 正如它的名字所表明的一样 EasyMotion可以让你在Vim中以更简单的方式移动 一旦熟练
  • gradle7.0.2如何发布jitpack开源项目

    前言 gradle 可以说发展十分迅速 一下子就飙升 7 0 2 了 当你想用 github jitpack 发布自己的开源项目的时候 网上找的教程都是 基于gradle 3 4 版本的 里面还说道要依赖 android maven gra