Gradle学习-5 发布二进制插件

注:以下示例基于Gradle8.0

1、发布插件

  • 复制一分 buildSrc,执行命令行,生成一个新目录 leon-gradle-plugin
 cp -rf buildSrc leon-gradle-plugin

在这里插入图片描述

  • 在 leon-gradle-plugin 目录下的 build.gradle 中引入maven

plugins{
    // 引用 Groovy 插件,编译插件工程中的代码
    id 'groovy'
    // 引用 maven插件,用于发布 ( >= Gradle 7.0)
    id 'maven-publish'
//    //引用 maven插件,用于发布 ( < Gradle 7.0)
//    id 'maven'
}

声明仓库地址
//repositories {
//    jcenter()
//}

//声明依赖包
dependencies {
    implementation gradleApi()
    implementation localGroovy()
}



/************* 发布相关 ****************/
//配置 maven 插件中的 发布 任务(>= Gradle 7.0)
publishing {

    publications {
        mavenJava(MavenPublication){
            //设置groupId,通常为当前插件的包名
            groupId = 'com.leon.router.gradle'
            //设置artifactId,作为当前插件名称
            artifactId = 'leon-gradle-plugin'
            //设置插件版本号
            version = '1.0.0'

            // 指定要发布的组件,例如Java库或插件等
            from components.java
        }
    }

    repositories{
        maven {
            //设置发布路径为  工程根目录下的  leon-publish 文件夹
            url = uri("../leon_publish")
        }
    }
}

配置 maven 插件中的 发布 任务(< Gradle 7.0)
//uploadArchives{
//    repositories{
//        mavenDeployer{
//
//            //设置发布路径为  工程根目录下的  leon-publish 文件夹
//            repositories(url: uri("../leon_publish")){
//
//                //设置groupId,通常为当前插件的包名
//                pom.groupId = 'com.leon.router.gradle'
//
//                //设置artifactId,作为当前插件名称
//                pom.artifactId = 'leon-gradle-plugin'
//
//                //设置插件版本号
//                pom.version = '1.0.0'
//
//            }
//        }
//    }
//}
  • 在根目录下的 setting,gradle 中引入 模块 leon-gradle-plugin

在这里插入图片描述

  • 执行发布任务,命令行执行以下命令
//Gradle大于等于7.0时
./gradlew :leon-gradle-plugin:publish

//Gradle小于7.0时
./gradlew :leon-gradle-plugin:uploadArchives

在这里插入图片描述
根目录下就会生成 leon_publish目录
在这里插入图片描述

2、在其他工程中引用发布插件

新建一个Gradle8.0的Android工程 My Application

2.1、引入自定义maven仓库

在根目录的setting.gradle中,加入以下内容

buildscript {
    repositories {
        // 1、引入自定义maven仓库
        maven {
            url uri("/Users/leon/AndroidStudioProjects/GradleLeaning2/leon_publish")
        }
    }
    dependencies {
        //2、声明依赖插件
        classpath 'com.leon.router.gradle:leon-gradle-plugin:1.0.0'
    }
}

在这里插入图片描述

2、应用插件

在app目录下的build.gradle中加入以下配置

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
    //3、应用插件
    id 'com.leon.rt'
}

//4、向插件传递参数
leonEx {
    projectName project.name
    projectPath project.getProjectDir().absolutePath
}

在这里插入图片描述

  • 执行命令行
./gradlew clean -q

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【热部署】✈️Springboot 项目的热部署实现方式

目录 &#x1f378;前言 &#x1f37b;一、热部署和手动重启 &#x1f37a;二、热部署的实现 2.1 手动启动热部署 2.2 自动检测热部署 2.3 关闭热部署 &#x1f49e;️三、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;书接上文&#xff0c;通过Springboot 中的 actu…

解析Kotlin中扩展函数与扩展属性【笔记摘要】

1.扩展函数 1.1 作用域&#xff1a;扩展函数写的位置不同&#xff0c;作用域就也不同 扩展函数可以写成顶层函数&#xff08;Top-level Function&#xff09;&#xff0c;此时它只属于它所在的 package。这样你就能在任何类里使用它&#xff1a; package com.rengwuxianfun …

zabbix“专家坐诊”第244期问答

问题一 Q&#xff1a;请教一下&#xff0c;我的zabbix6.0配置的基于snmptrap上报的日志提取关键字推送告警&#xff0c;正则表达式能否帮忙看看怎么弄&#xff1f;我这配置的提示一直不正确&#xff1f; A&#xff1a;具体看一下这里的信息。 Q&#xff1a;这个我是直接复制的…

如何计算弧线弹道的落地位置

1&#xff09;如何计算弧线弹道的落地位置 2&#xff09;Unity 2021 IL2CPP下使用Protobuf-net序列化报异常 3&#xff09;编译问题&#xff0c;用Mono可以&#xff0c;但用IL2CPP就报错 4&#xff09;Wwise的Bank在安卓上LoadBank之后&#xff0c;播放没有声音 这是第393篇UWA…

ssm旅游信息分享网站-计算机毕业设计源码92194

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 旅游信息分享网站分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 旅游信息分享网站总体设计 3.1 系统功能模块设计 3.2 数据库设计 3.4本章小结 4 旅游信…

从全连接到卷积

一、全连接到卷积 1、卷积具有两个原则&#xff1a; 平移不变性&#xff1a;无论作用在哪个部分&#xff0c;它都要有相同的作用&#xff0c;而不会随着位置的改变而改变 局部性&#xff1a;卷积核作用处&#xff0c;作用域应该是核作用点的周围一小部分而不作用于更大的部分 …

一篇文章搞懂弹性云服务器和轻量云服务器的区别

前言 在众多的云服务器类型中&#xff0c;弹性云服务器和轻量云服务器因其各自的特点和优势&#xff0c;受到了广大用户的青睐。那么&#xff0c;这两者之间到底有哪些区别呢&#xff1f;本文将为您详细解析。 弹性云服务器&#xff1a;灵活多变的计算资源池 弹性云服务器&…

【计算机体系结构】缓存的false sharing

在介绍缓存的false sharing之前&#xff0c;本文先介绍一下多核系统中缓存一致性是如何维护的。 目前主流的多核系统中的缓存一致性协议是MESI协议及其衍生协议。 MESI协议 MESI协议的4种状态 MESI协议有4种状态。MESI是4种状态的首字母缩写&#xff0c;缓存行的4种状态分别…

CoAtNet(NeurIPS 2023, Google)论文解读

paper&#xff1a;CoAtNet: Marrying Convolution and Attention for All Data Sizes third-party implementation&#xff1a;https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/maxxvit.py 背景 自AlexNet以来&#xff0c;ConvNets一直是计算机…

【接口自动化测试】第四节.实现项目核心业务的单接口自动化测试

文章目录 前言一、登录单接口自动化测试 1.1 登录单接口文档信息 1.2 登录成功 1.3 登录失败&#xff08;用户名为空&#xff09;二、数据驱动的实现 2.1 json文件实现数据驱动三、课程添加单接口自动化测试 3.1 课程添加单接口文档信息 3.2 课程…

N5 使用Gensim库训练Word2Vec模型

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 这周学习训练一个Word2Vec模型&#xff0c;并进行一些基本的词向量操作。 Word2Vec 模型 Word2Vec 是一种基于神经网络的词向量表示方法&#x…

Qt Q_ASSERT详解

Q_ASSERT详解 引言一、基本用法二、深入了解三、参考链接 引言 Q_ASSERT是 Qt 框架中的一个宏&#xff0c;用于在调试时检查某个条件是否为真。它是程序调试中的一个重要工具&#xff0c;有助于开发者在开发过程中及时发现并修复潜在的错误。 一、基本用法 只在使用 Qt 的 D…

API 授权最佳实践

API&#xff08;应用程序编程接口&#xff09;就像秘密之门&#xff0c;允许不同的软件程序进行通信。但并不是每个人都应该拥有每扇门的钥匙&#xff0c;就像不是每个软件都应该不受限制地访问每个 API 一样。 这些 API 将从银行的移动应用程序到您最喜欢的社交媒体平台的所有…

嵌入式C语言中指针与链表的关系详解

假定给你一块非常小的内存,这块内存只有8字节,这里也没有高级语言,没有操作系统,你操作的数据单位是单个字节,你该怎样读写这块内存呢? 注意这里的限定,再读一遍,没有高级语言,没有操作系统,在这样的限制之下,你必须直面内存读写的本质。 这个本质是什么呢? 本质…

Vuex的基本使用

1.安装vuex npm i vuex3 2.引入 import Vuex from vuex 3.使用 Vue.use(Vuex) 4.在src下的目录创建store&#xff0c;新建index.js import store from ./store 5.编写index.js import Vue from vue import Vuex from vuex Vue.use(Vuex)//用于操作组件中的动作 const actions{a…

Linux安装Node-RED并实现后台运行及开机启动

首先确保系统中已近成功安装Node.js&#xff0c;并保证需要的合适版本&#xff1a; 关于node.js的安装可以参考我的另一篇博文:《AliyunOS安装Node.js》。 然后就可以使用npm工具安装Node-RED了&#xff0c;很简单使用如下命令&#xff1a; sudo npm install -g --unsafe-per…

antd Select前端加模糊搜索

背景&#xff1a;前端的小伙伴经常在开发antd Select的时候后端不提供搜索模糊搜索接口&#xff0c;而是全量返回数据&#xff0c;这个时候就需要我们前端自己来写一个模糊搜索了。 效果 代码截图 代码 <SelectshowSearchmode"multiple"options{studioList}filte…

视频分析、目标检测的过去和未来:目标检测从入门到精通 ------ YOLOv8 到 多模态大模型处理视觉基础任务

文章大纲 计算机视觉项目的关键步骤目标检测入门视频分析项目最佳实践数据集构建数据准备:数据集标注规范与数据规模参考标注工具标注工具:目标检测yolo 极简标注工具综合标注工具:label-studio半自动标注工具:X-AnyLabeling目标检测与多模态哪些多模态模型可以做目标检测?…

构建安全稳定的应用:Spring Security 实用指南

前言 在现代 Web 应用程序中&#xff0c;安全性是至关重要的一个方面。Spring Security 作为一个功能强大且广泛使用的安全框架&#xff0c;为 Java 应用程序提供了全面的安全解决方案。本文将深入介绍 Spring Security 的基本概念、核心功能以及如何在应用程序中使用它来实现…

招聘应聘,HR如何测试候选人的领导能力?

作为企业的HR&#xff0c; 如何通过测评的方式来了解一个人的领导能力&#xff1f; 这里仅仅是说测评的方式&#xff0c;除此以外&#xff0c;还有很多方式&#xff0c;比如&#xff1a;背景调查&#xff0c;无领导小组讨论等等..... 对于一个人的领导能力测试&#xff0c;主要…