最近用Java写了一个Gradle插件

插件介绍

https://blog.csdn.net/wang382758656/article/details/124236006?spm=1001.2014.3001.5501

然后想在各个项目中使用,发现gradle 7 以后的脚本变化挺大的,折腾了一天,整理出一个完整的脚本,这里做一个笔记供大伙参考。

首先,我的插件是以module方式开发的,然后用nexus(这是一个软件,不是nexus手机,不要懵逼,我用的是nexus-3.38.1-01win64)搭建了私有库,所以所有的配置都在module的build.gradle中配置

配置1.plugins 的配置,新版本是maven-publish以前是maven

plugins {id 'java-gradle-plugin'  //Gradle开发插件id 'java'              //使用javaid 'maven-publish'       //插件发布
}

配置2.gradlePlugin 配置

这个主要是配置插件的信息,这里的版本号,并不代表发布的版本号

gradlePlugin {plugins {//定义的信息不一定和发布信息相同MethodTracer {id = 'com.sand.mt'                                //定义插件idversion = '1.0.2'implementationClass = 'com.sand.mt.src.plug.MTPlug'  //定义插件实现类}}
}

配置3.也是最关键的

1.发布到本地仓库的配置,可以看到这里并不需要配置仓库地址,用户名密码之类

publishing {// 定义发布什么publications {plugin(MavenPublication) {from components.java //使用默认的配置生成jar包groupId = 'com.sand.group'     //这三部分组成了:com.example:plugin:1.0.0-SNAPSHOTartifactId = 'mt'version = '1.0.0'}}// 定义发布到哪// publishPluginPublicationToRepoRepository 发布到 plugin/build/repo// publishPluginPublicationToMavenLocal 发布到 ~/.m2/repositoryrepositories {maven {name = 'repo'url = layout.buildDirectory.dir("repo")}}
}

2.远程仓库配置

publishing {publications {maven(MavenPublication) {groupId = "com.sand.group"artifactId = "mt"version = "1.0.2"description "MTPlug is a good apm tool"from components.java}}repositories {maven {allowInsecureProtocol trueurl = '你的maven仓库url'credentials {it.username = "username"it.password = "pwd"}}}
}

引用

如果发布到本地,那么根目录的repositories 中添加mavenLocal()

mavenLocal()

远程仓库配置

        maven {allowInsecureProtocol = trueurl '你发布的时候的仓库地址'//如果设置了匿名访问,就不需要配置下面的credentials部分credentials {it.username = "username"it.password = "pwd"}}

完整的module配置文件

plugins {id 'java-gradle-plugin'  //Gradle开发插件id 'java'              //使用Kotlinid 'maven-publish'       //插件发布
}dependencies {implementation "com.android.tools.build:gradle:7.0.3"implementation files('libs/asm-9.2.jar')implementation files('libs/asm-commons-9.2.jar')implementation files('libs/asm-util-9.2.jar')implementation files('libs/commons-io-2.6.jar')  //使用com.android.build.api
}//
gradlePlugin {plugins {//定义的信息不一定和发布信息相同MethodTracer {id = 'com.sand.mt'                                //定义插件idversion = '1.0.2'implementationClass = 'com.sand.mt.src.plug.MTPlug'  //定义插件实现类}}
}本地发布
//publishing {
//
//    // 定义发布什么
//    publications {
//        plugin(MavenPublication) {
//            from components.java //使用默认的配置生成jar包
//            groupId = 'com.sand.group'     //这三部分组成了:com.example:plugin:1.0.0-SNAPSHOT
//            artifactId = 'mt'
//            version = '1.0.0'
//        }
//    }
//    // 定义发布到哪
//    // publishPluginPublicationToRepoRepository 发布到 plugin/build/repo
//    // publishPluginPublicationToMavenLocal 发布到 ~/.m2/repository
//    repositories {
//        maven {
//            name = 'repo'
//            url = layout.buildDirectory.dir("repo")
//        }
//    }
//}//远程发布, 发布到我自己的私有库
publishing {publications {maven(MavenPublication) {groupId = "com.sand.group"artifactId = "mt"version = "1.0.2"description "MTPlug is a good apm tool"from components.java}}repositories {maven {allowInsecureProtocol trueurl = 'http://161.117.195.45:6677/repository/sand_repo/'credentials {it.username = "username"it.password = "pwd"}}}
}

完整的根目录biuild.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {//本地依赖的关键代码mavenLocal()maven {allowInsecureProtocol = trueurl 'http://161.117.195.45:6677/repository/sand_repo/'}google()mavenCentral()maven { url 'https://dl.google.com/dl/android/maven2/' }maven { url 'https://www.jitpack.io' }jcenter()maven { url 'https://jcenter.bintray.com' }}dependencies {classpath "com.android.tools.build:gradle:7.0.4"classpath "com.sand.group:mt:1.0.2" //来自自定义仓库}
}allprojects{repositories{
//        //本地依赖的关键代码maven {allowInsecureProtocol = trueurl 'http://161.117.195.45:6677/repository/sand_repo/'}jcenter()google()mavenLocal()mavenCentral()maven { url 'https://dl.google.com/dl/android/maven2/' }maven { url 'https://www.jitpack.io' }}}task clean(type: Delete) {delete rootProject.buildDir
}

工程源码

https://github.com/woshiwzy/MTDemo

Gradle 7.0+发布Gradle插件到私有maven仓库笔记相关推荐

  1. 因财务造假,贾跃亭被罚 2.41 亿元;华为徐直军重申不造成:但将推子品牌汽车;Gradle 7.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  2. 原美团联合创始人欲打造中国版 OpenAI ;ChatGPT 爆红惊动谷歌退隐创始人布林;Gradle 8.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. android 加载系统私有库,Android 搭建私有maven仓库及上传项目

    前言 在日常工作及项目迭代过程中,一定有不少同学自己写了一些框架性的东西,或者一些好用的工具,总之就是能复用的代码.然而也有不少同学为了复用这些代码不得不复制粘贴到不同项目中,这样相同的功能出现了多份 ...

  4. 在内网中使用maven_搭建私有maven仓库并在项目中使用

    这是一篇写给女朋友看的教程...前方高能,注意避让~ 1.私有maven仓库的搭建 搭建环境为阿里云ESC服务器,CentOS.确保服务器已经安装Jdk.然后我要手把手教你安装和启动nexus. St ...

  5. Nexus搭建私有Maven仓库用户角色创建和权限分配

    Nexus搭建私有Maven仓库用户角色创建和权限分配 前提:已经搭建好私有仓库,并且可以正常访问,搭建方式可根据官方文档操作 在浏览器中打开控制台,并使用admin账号进行登录 1. 创建Repos ...

  6. Nexus【环境搭建 01】CentOS 7.5 环境下搭建私有Maven仓库实录(启动问题处理+安装文件 nexus-3.4.0-02-unix.tar.gz 云盘链接)

    1. 为什么要搭建私有Maven仓库   废话少说,只说主要原因,我现在参与的项目各个模块都是以微服务形式进行部署的,包括权限验证模块,我之前参与过一个项目,使用的是自己封装的权限验证setter依赖 ...

  7. 史上最快、最强大的Gradle 5.0发布,新特性全解

    Gradle 5.0是有史以来速度最快.最安全.最强大的Gradle版本,这是Gradle官方给出的评价,v5.0 新增的功能主要包括: 在构建缓存和更新检查功能的基础之上,Gradle 5.0又改进 ...

  8. 使用 Sonatype Nexus 3 搭建 Maven 私服、本地私有 Maven 仓库,Gradle 打包 jar 、aar 后自动上传到 Nexus Maven 仓库配置

    1 下载 Nexus 3 https://www.sonatype.com/download-oss-sonatype 官网 (2019年7月18日更新:网站改版了 下载地址:https://down ...

  9. android发布三方库到远程maven仓库详细教程

    前提   为什么突然要使用maven了,jcenter可是google御用三方仓库,难道jcenter不香了吗?没错,jcenter就是不香了.当你升级AndroidStudio版本再次创建项目后发现 ...

最新文章

  1. java se 7u67_Linux下安装jdk-7u67-linux-x64.rpm
  2. ABAP:关于文本(Read_text,Save_text)
  3. java中的循环 while
  4. 奇小葩讲设备树(5/5)-- Linux设备树详解(五)设备树的使用
  5. 感谢支持,超预期重印并加码
  6. 使用Vue2.x高效还原美团外卖项目
  7. 7-3 欢迎参加贵工程2021年C语言程序设计大赛! (5 分)
  8. 【HDOJ】1720 A+B coming
  9. 面向对面 静态参数 与 组合
  10. matlab矩阵作分钟平均,提高matlab运行速度和节省空间的心得合集(ZT)
  11. 黑苹果hackintosh wifi驱动安装
  12. html生成pdf字体错误,使用wkhtmltopdf时显示为PDF的错误字体
  13. 微信网页开发(3)--微信网页授权
  14. 大脑计算机马云,马云对话马斯克:人和机器谁更聪明?两马吵起来了
  15. Shake Shack新店推出专为狗狗研制的冰激凌;素食“鱼肉”三明治挑战赛百味;植物肉品牌v2登陆中国市场...
  16. 【电驴傻瓜教程-我为人人,人人为我】
  17. 侧脸生成正脸概论与精析
  18. MarkdownPad2 插入数学公式Mathjax
  19. python+matplotlib绘制南丁格尔玫瑰图
  20. 慎用Application.DoEvents( )

热门文章

  1. 孙茂松:深度学习的红利我们享受得差不多了
  2. Photoshop 字体描边和阴影
  3. ASP.NET MVC Areas
  4. 双边滤波器,引导滤波器
  5. 做淘客,你已经成功了。
  6. 开关磁阻电机控制仿真(matlab 2016b版本仿真模型 自用)
  7. 面试时,如果面试官问你怎样看待加班,应该怎么回答?
  8. matlab 正轴测图,正等轴测图的画法
  9. 毕业生又开始找工作了
  10. JavaScript-BOM对象