如何封装一个通用发布版本步骤1:在项目根目录下创建:maven_publish.gradleapply plugin: 'maven'uploadarchives { repositories { mavendeployer { // 是否快照版本 def issnapshot = boolean.valueof(maven_is_snapshot) def versionname = maven_version if (issnapshot) { versionname += -snapshot } // 组件信息 pom.groupid = maven_group_id pom.artifactid = maven_artifactid pom.version = versionname // 快照仓库路径 snapshotrepository(url: uri(maven_snapshot_url)) { authentication(username: maven_username, password: maven_username) } // 发布仓库路径 repository(url: uri(maven_release_url)) { authentication(username: maven_username, password: maven_username) } println(################################### + \\nuploadarchives = + pom.groupid + : + pom.artifactid + : + pom.version + . + pom.packaging + \\nrepository = + (issnapshot ? maven_snapshot_url : maven_release_url) + \\n################################### ) } }}这段脚本会读取 maven_is_snapshot 配置参数,如果为 true,会在版本号后追加 -snapshot 后缀,表示快照版本。随后声明了两个仓库:repository(…) 声明的是 release 仓库地址,而 snapshotrepository(…) 声明的是快照仓库地址。maven 会自动将版本号带 -snapshot 后缀的组件发布到 snapshotrepository(…) 仓库中,这样就 自动将正式版本和快照版本分发的不同仓库中。
步骤2:声明项目级gradle.properties配置参数:maven_snapshot_url = /users/yuhb/workspace/public/demohall/snapshotrepositorymaven_release_url = /users/yuhb/workspace/public/demohall/releaserepositorymaven_username = maven_password = maven_is_snapshot = truemaven_group_id = com.yuhb.demo| 参数描述 |
maven_snapshot_url 快照仓库地址
maven_release_ur 发布仓库地址
maven_username 仓库账号
maven_password 仓库密码
maven_is_snapshot 是否快照版本
maven_group_id 组织 / 公司的名称
maven_artifactid 组件的名称(在发布模块配置)
maven_version 组件的版本(在发布模块配置)
步骤 3:在发布模块应用脚本apply from: '../maven.gradle'...步骤 4:在发布模块配置参数 (模块级配置参数会覆盖项目级配置参数)模块级 gradle.properties
maven_artifactid = mavenmaven_version = v1.0.0maven_is_snapshot = true...然后在gradle面板中找到对应模块下的任务uploadarchives,执行成功后就可以将组建发布对应的maven私服上了本地aar文件引入的一些技巧:模块级build.gradle
dependencies { ... api(name: 'lib-debug', ext: 'aar')}repositories { flatdir { dirs libs }}这种方式如果其他模块需要使用就不方便:
方法1:
在项目级build.gradle
allprojects { repositories { google() mavencentral() flatdir { dirs project(':aarlib').file('libs') } // 文件夹要放在某个 module 内 }}这种方式可以在本工程中使用,如果跨工程或者跨设备就不好使了
方法2:二次打包aar发布到maven仓库
apply plugin: 'maven-publish'def libpath = project.getprojectdir().getabsolutepath()publishing { publications { lib1(mavenpublication) { groupid maven_group_id artifactid lib version v1.0.0 artifact(libpath + /libs/lib.aar) } lib2(mavenpublication) { groupid maven_group_id artifactid lib2 version v1.0.0 artifact(libpath + /libs/lib2.aar) } } repositories { maven { // 发布仓库路径 url maven_release_url // 本地仓库地址不适用账号密码 // > failed to publish publication 'maven' to repository 'maven' // > authentication scheme 'all'(authentication) is not supported by protocol 'file' // credentials(passwordcredentials) { // username = maven_username // password = maven_password // } } }}好了,本文就讲解到这里了,基本涵盖了关于maven仓库如何使用的大部分知识盲点,内容较多,大家可以收藏起来慢慢消化。
基于RA6M5开发板的低功耗电子时钟设计
《纽约时报》用AR新模式来报道新闻,让我们一睹大卫·鲍伊系列服装
哪款手游最吃流量 你们心里难道没点X数吗?
英创信息技术基于SPI接口的大容量通用数据采集方案
Entegris的野心 进军中国半导体行业
如何使用Maven进行组件化发布(下)
微型LED背光照明的生产技术将在2019年趋于成熟
量子科技中国按下“快进键”,5年内我国新增85%量子领域相关企业
Vivo推出TWSEarphone无线蓝牙耳机 售价999元
【大大芯方案】智能充电体验,大联大推出基于高通产品的多功能TWS耳机充电仓方案
Wi-Fi6和5G技术相辅相成并共存
百度与酷开的重磅合作,互联网电视版图正在重构
2010年NAND Flash价格发展持续两极化
小米正研发一款20W智能追踪式无线充 随手一放即可充电
如何理解动力电池PACK智能化?
单片机控制系统的红外线遥控器接口
电机选型的详细步骤有哪些
人工智能将会让我们的生活变得更加美好
红外热成像非接触测温在线诊断系统具备的主要功能以及在铁水罐、鱼雷罐和钢包中的应用
老笔记本升级“易筋经”