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

通过gradle发布aar或jar携带sources-jar到maven nexus

找了很久,没有找到满意的。终于找到一个好的办法。
gradle7.x适用。比以前的写法简洁。

发布传统的jar工程

比如okhttp,fastjson等项目,纯java工程。

  1. 直接创建新文件publish.gradle:
apply plugin: 'maven-publish'Properties properties = new Properties()
try {InputStream inputStream = file('../local.properties').newDataInputStream()properties.load(inputStream)
} catch (Throwable ignored) {ignored.printStackTrace()
}def moduleGroupId = findProperty('group.id')
def mavenName = findProperty('maven.name')
def mavenUploadUrl = findProperty('maven.upload.url')
def mavenUploadUsername = properties.getProperty('username')
def mavenUploadPassword = properties.getProperty('password')
def moduleArtifactId = "okhttp"
def moduleVersion = "4.12.0" //记得每次修改publishing {publications {create(moduleArtifactId, MavenPublication) {from components.javagroupId "${moduleGroupId}" //看备注artifactId "${moduleArtifactId}"version "${moduleVersion}"}}repositories {maven {name = mavenNameurl = mavenUploadUrlcredentials {username = mavenUploadUsernamepassword = mavenUploadPassword}}}
}

然后在jar生成工程的build.gradle里面添加:

//补充打包条件
java {withJavadocJar()withSourcesJar()
}apply from: "publish.gradle" //引入即可

gradle sync以后,能够得到如下:
请添加图片描述
点击运行发布。
请添加图片描述
备注:
其中,groupId "${moduleGroupId}" 是为了公司统一group包名。一些自行新建的仓库如此即可。

但,如果你是想修改某个外部库的源码,传到了公司内部,然后引入使用。最好的办法是注释掉groupId,修改源码,升级版本号即可。这样它会从多个仓库url去取,自然会从你们公司地址取到版本。

注释掉才能保证引入的时候:implement 'com.squareup.okhttp3:okhttp:4.12.0'

这样才不会导致多包问题。

发布aar

android 的aar发布差不多:
脚本文件publish.gradle:

apply plugin: 'maven-publish'//读取账号和签名信息文件
Properties properties = new Properties()
try {InputStream inputStream = file('../local.properties').newDataInputStream()properties.load(inputStream)
} catch (Throwable ignored) {ignored.printStackTrace()
}
def moduleGroupId = findProperty('group.id')
def mavenName = findProperty('maven.name')
def mavenUploadUrl = findProperty('maven.upload.url')
def mavenUploadUsername = properties.getProperty('username')
def mavenUploadPassword = properties.getProperty('password')
def moduleArtifactId = nameandroid {publishing {singleVariant("release") {withSourcesJar()withJavadocJar()}}
}afterEvaluate {publishing {publications {release(MavenPublication) {from components.releasegroupId = moduleGroupIdartifactId = moduleArtifactIdversion = moduleVersion}}repositories {maven {name = mavenNameurl = mavenUploadUrlcredentials {username = mavenUploadUsernamepassword = mavenUploadPassword}}}}
}

引入则:
apply from: “…/gradle/publish.gradle”


http://www.mrgr.cn/news/82942.html

相关文章:

  • Microsoft Azure Cosmos DB:全球分布式、多模型数据库服务
  • Express 加 sqlite3 写一个简单博客
  • ansible-性能优化
  • 【PPTist】批注、选择窗格
  • 深度学习知识点:RNN
  • 【UE5 C++课程系列笔记】23——多线程基础——AsyncTask
  • 【简博士统计学习方法】第1章:7. 生成模型与判别模型
  • HarmonyOS开发:粒子动画应用实战
  • TCP 套接字 方法
  • 我在广州学 Mysql 系列——与索引相关的练习题
  • 前端 动图方案
  • C#—Task异步的常用方法及TaskFactory工厂类详解
  • ELK实战(最详细)
  • cuda实现flash_attn_mma_share_kv源码分析
  • 用VS C#构建Windows服务【纯操作版,附带项目地址】
  • [开源]自动化定位建图系统
  • A/B实验之置信检验(一):如何避免误判 (I类) 和漏报 (II类)
  • 137. 只出现一次的数字 II
  • 【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期
  • 9. C 语言 循环控制结构详解
  • 数据传送类指令
  • 【Linux】上传、下载、压缩、解压
  • Python 模拟登录网页,或者编写爬虫时模拟登录的详细总结
  • 【Rust自学】10.7. 生命周期 Pt.3:输入输出生命周期与3规则
  • 30天开发操作系统 第 12 天 -- 定时器
  • Java虚拟机面试题:JVM调优