游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

工作日报2022。1。19mavengradle插件如何上传

  2022。1。19问题澄清;记录仪屏蔽通知栏开发澄清文档书写。codex问题处理;后续流程跟踪。翻译词条归一整理;安全终端加密服务密保保存功能,增加OTA参数;合入布控球振动修改;
  mavengradle插件如何上传多渠道library
  1、背景
  对接的第三方SDK分联调版(测试环境)跟正式版(生产环境),调试时用联调版,上线用正式版。两个环境对应不同的代码、资源文件,考虑到复用问题,因此新建一个library集成这个SDK,并上传到公共库,之后在项目中直接依赖即可。
  2、需求及实现
  2。1、需求
  因为分两个版本,且版本的代码、资源各不相同,因此这个library应该要实现以下需求
  一个librarymodule包含多个渠道flavor
  可以单独上传flavor,并且互不影响
  2。2、一个任务上传一个渠道
  正常情况下使用maven插件是这样:
  applyplugin:com。android。library
  applyplugin:maven
  1hr2hr然后用uploadArchives配置pom相关信息,和上传路径等:
  uploadArchives{
  repositories。mavenDeployer{
  pom。groupIdGROUP
  pom。artifactIdARTIFACTID
  pom。versionVERSIONNAME
  repository(url:REPOSITORYURL){
  authentication(userName:NEXUSUSERNAME,password:NEXUSPASSWORD)
  }
  }
  }
  最后执行uploadArchives任务即可上传成功。
  但是这样显然不符合需求,多个渠道的情况下会有多个aar,且pom。artifactId也是不一样的,需要针对性的配置。
  2。3、一个任务同时上传多个渠道
  查了好几天资料,都没发现什么有用的信息,大多都是针对单个flavor的,终于在StackOverflow上找到了一些有用信息,照葫芦画瓢,最后gradle如下:
  importorg。gradle。api。internal。artifacts。publish。DefaultPublishArtifact导入类
  。。。
  android{
  publishNonDefaulttrue
  productFlavors{
  调试环境、测试环境
  dev{
  }
  生产环境、正式环境
  production{
  }
  }
  。。。
  }
  配置要上传的文件信息
  artifacts{
  archivesnewDefaultPublishArtifact(production,aar,aar,null,newDate(),newFile(buildoutputsaar,libproductionrelease。aar))
  archivesnewDefaultPublishArtifact(dev,aar,aar,null,newDate(),newFile(buildoutputsaar,libdevrelease。aar))
  }
  上传任务配置
  uploadArchives{
  repositories。mavenDeployer{
  。。。
  添加过滤器
  正式环境
  addFilter(pro){artifact,file
  artifact。name。contains(production)production就是artifacts里指定的name
  }
  测试环境
  addFilter(dev){artifact,file
  artifact。name。contains(dev)
  }
  单独设置pom文件
  pom(pro)。groupIdGROUP
  pom(pro)。artifactIdPRODUCTIONMAVEN。ARTIFACTID
  pom(pro)。versionPRODUCTIONMAVEN。VERSIONNAME
  pom(dev)。groupIdGROUP
  pom(dev)。artifactIdDEVMAVEN。ARTIFACTID
  pom(dev)。versionDEVMAVEN。VERSIONNAME
  }
  }
  这样执行uploadArchives之后,就会上传多个渠道的aar了,这里算完成了一半。
  2。4、自定义上传任务
  要实现单个渠道上传,只靠uploadArchives这一个任务是不行的,因此要自定义上传任务,实现一样的功能。本质上uploadArchives也是Upload类型的Task,即我们可以照着uploadArchives自定义Task继承Upload:
  上传调试版aar
  taskuploadDev(type:Upload,group:upload){
  repositories。mavenDeployer{
  repository(url:uri(。。repos)){
  }
  addFilter(dev){artifact,file
  println(artifactartifact。name)
  artifact。name。contains(dev)
  }
  pom(dev)。groupIdMIGUGROUP
  pom(dev)。artifactIdDEVMAVEN。ARTIFACTID
  pom(dev)。versionDEVMAVEN。VERSIONNAME
  }
  }
  同步之后就会在upload目录下多了一个任务:
  执行之后,就会发现这个错误:
  Novaluehasbeenspecifiedforproperty‘artifacts’。
  这时看uploadArchives的源码是最好的,但是我不知道去哪里看,所以又耗费了我一些时间查资料。最后实在没辙,终于直面这个错误:既然没指定,那就显示的设置好了。
  2。4。1artifacts和configuration
  配置上传信息的时候用到了artifacts,但是不知道为什么要这样写,看了下源码,artifacts和configurations都是位于project下:
  Configuresthepublishedartifactsforthisproject。
  configurations{
  declaringnewconfigurationthatwillbeusedtoassociatewithartifacts
  schema
  }
  taskschemaJar(type:Jar){
  someimaginarytaskthatcreatesajarartifactwiththeschema
  }
  artifacts{
  configurationnameandthetask:
  schemaschemaJar
  }
  voidartifacts(ClosureconfigureClosure);
  根据注释的说明,应该有个默认的configuration,是这样写的:
  configurations{
  archives
  }
  所以我们才能使用archives来配置要上传的文件,而看了Upload的源码后发现,artifacts并没有直接设置的方法,而是通过Configuration获取的:
  Returnstheartifactswhichwillbeuploaded。
  returntheartifacts。
  InputFiles
  publicFileCollectiongetArtifacts(){
  ConfigurationconfigurationgetConfiguration();
  returnconfigurationnull?null:configuration。getAllArtifacts()。getFiles();
  }
  也就说是要设置artifacts必须要先设置Configuration。通过打印configurations和上面的分析,archives就是我们的目标。所以手动把archives这个配置加进来:
  上传调试版aar
  taskuploadDev(type:Upload,group:upload){
  设置configuration
  setConfiguration(project。configurations。getByName(archives))
  repositories。mavenDeployer{
  。。。
  }
  到这里已经可以了。
  2。4。2自定义artifacts和configuration
  同样地,可以自定义configuration来过滤配置文件,自定义上传Task设置为该configuration即可
  configurations{
  dev
  pro
  }
  配置要上传的文件信息
  artifacts{
  pronewDefaultPublishArtifact(production,aar,aar,null,newDate(),newFile(buildoutputsaar,libproductionrelease。aar))
  devnewDefaultPublishArtifact(dev,aar,aar,null,newDate(),newFile(buildoutputsaar,libdevrelease。aar))
  }
  上传调试版aar
  taskuploadDev(type:Upload,group:upload){
  设置configuration
  setConfiguration(project。configurations。getByName(dev))
  repositories。mavenDeployer{
  。。。
  }
  2。4。3最终版本
  configurations{
  devArchives
  proArchives
  }
  配置要上传的文件信息
  artifacts{
  proArchivesnewDefaultPublishArtifact(production,aar,aar,null,newDate(),newFile(buildoutputsaar,libproductionrelease。aar))
  devArchivesnewDefaultPublishArtifact(dev,aar,aar,null,newDate(),newFile(buildoutputsaar,libdevrelease。aar))
  }
  上传调试版aar
  taskuploadDev(type:Upload,group:upload,dependsOn:assembleDevRelease){
  setConfiguration(project。configurations。getByName(devArchives))
  repositories。mavenDeployer{
  pom。groupIdMIGUGROUP
  pom。artifactIdDEVMAVEN。ARTIFACTID
  pom。versionDEVMAVEN。VERSIONNAME
  repository(url:uri(。。repos)){
  }
  }
  }
  上传正式版aar
  taskuploadPro(type:Upload,group:upload,dependsOn:assembleProRelease){
  setConfiguration(project。configurations。getByName(proArchives))
  repositories。mavenDeployer{
  pom。groupIdMIGUGROUP
  pom。artifactIdPRODUCTIONMAVEN。ARTIFACTID
  pom。versionPRODUCTIONMAVEN。VERSIONNAME
  repository(url:uri(。。repos)){
  }
  }
  }
  生成的两个任务分别用于上传联调版和正式版。为了每次上传都是最新版本,task可以依赖于assembleXXX后执行,如dependsOn:‘assembleProRelease’

每次10分钟跟我学Python(第三十八次课)大家好!我是幻化意识流。今天继续跟我学Python。大家每天都要照镜子,至少照一次是吧?幽默一下。我们都知道,由于光的反射原理,镜子里的我们的图像跟实际的我们正好相反,当……职场人挫折需要、挫折、冲突是人生不可逾越的企盼和境遇。就每单个个体而言,其需要层次、挫折冲突产生的心理震荡又往往是与其文化素养、社交层次、行为能力、心理修养密不可分的。在社会主义市场经济……上来就王炸,SmartArtisan睿匠首款机械键盘即将发布SmartArtisan睿匠,印象中主要是给玩家提供一些个性PBT键帽、精品线材和木质腕托等外设周边,没想到突然要玩成品,而且上来就直接王炸:100全铝机身、多色阳极氧化可选、……iPhone又现致命漏洞在昨日,iPhone安全隐患再次上微博热搜,内容显示,一家名为AmnestyInternational的公司发布报告称,苹果的iPhone存在漏洞,黑客可以通过间谍软件盗取iP……吉利太厉害,新缤越来了,小型SUV又要霸榜了今天,吉利官方公布了新款缤越的图片,颜值、配色进一步升级,这下销量又妥妥的可以保证了。先来看看官方发布的图片,从图片看,超酷撞色车身,运动气息更加的浓厚,有点小一号的领克02的……男子投入近百万返乡创业,养牛场突然被拆令人唏嘘不已现在,有很多的年轻人在大城市或者在外地有了一些原始积累后,就想回到自己的家乡投资,为家乡做一点贡献,或者说回到自己的家乡发展。不过,并不是每一个回到家乡发展的人都是美好的……在农村你还留有什么记忆?我是一个农村农村生农村长的、是一个地地道道80后的农村人。在我的记忆里家里收麦子是用手割的、割完还要放在场上用拖拉机在上压、我呢大人就没空管了,一个人在家大人又不放心只能……展锐唐古拉T7705G手机获泰尔实验室权威认证,秘籍是什么?大家都知道了吧,搭载展锐唐古拉T770芯片的5G手机,通过泰尔实验室36个月抗老化性能认证,达到最高等级五级抗老化标准,这是国家级实验室对搭载展锐唐古拉T770芯片的5G手机系……6天5个涨停空壳一汽夏利作妖一汽夏利正筹划与国内新能源车企合作,生产新能源汽车,复牌再度涨停的一汽夏利或将摆脱作为壳资源被出售的窘境。4月10日,一汽夏利(000927。SZ)再度一字板涨停。一汽夏……招募社区推广宣传策划公司合作我们帮帮好帮手社区共享平台(核心平台)为支持各社区(子)平台、社区入驻商家更好发展社区业务,诚意邀请有社区推广能力的公司或团队成为我们社区推广的宣传策划、运营合作伙伴。合……全球缺芯,但真正涨价的只有两种芯片?全球缺芯,以芯片为支柱产业的韩国,5月出口创下32年来最大增幅;一季度,全球10大芯片制造公司的季度总营收飙升至创历史记录的227。5亿美元。看起来,芯片行业一片大好,似乎只要……iPhone13包装盒曝光,苹果考虑环保和省钱,却忽略了用户在环保方面,科技厂商需要起到带头作用。因为每年手机厂商都会制造大量的电子产品,而电子产品在环境污染方面也非常巨大。作为手机厂商的领头者,苹果每年都会在环保上花费巨大的功夫。……
外卖员,快递员,滴滴司机,应该怎么选?哪个工资高?我在湖南娄底快递公司做过快递员,9毛钱一票,中午报10块钱餐费,说实话很辛苦,每天送100240票,基本都在160票左右,我所送的区域属于大型商场内的店铺加2个小区的包裹,从负……这才叫安全!静脉图像对应才能解锁,OPPO新专利或在这些设备为了提升用户的产品使用体验,各大科技公司可谓使劲浑身解数。正如当下备受关注的隐私安全问题,就有OPPO从解锁出发,安排了全新的静脉解锁专利。从天眼查App显示的内容中,OPPO……理光液晶工程投影评测全彩成像亮度超万流明2021年7月8日,理光在北京发布了全新的PJRU8800L系列液晶激光工程投影机。相比在这一领域占据主流的DLP投影,理光的液晶成像技术能够带来更好的色彩,理光研发团队也对新……对话真本聪KavaSwap测试网上线,为BSC和以太坊生态引2021年8月2日,真本聪与Kava联合举办了AMA活动,本次AMA邀请到Kava中国区市场负责人Ticky,她向大家介绍了Kava最新推出的跨链流动性中心KavaSwap的特……浙江家长起诉微信视频号,要求完善青少年模式杭州网讯(记者林舒然)新《未成年人保护法》即将实施,网络短视频产品应如何加强对青少年的保护?5月26日,浙江律师林华爽向杭州互联网法院提起民事诉讼,主张深圳市腾讯计算机系……分享两种一键将文字识别的方法,简直太好用了随着智能手机的发展,许多功能也随即浮现出来,在我们办公时,会常常遇到一些问题,比如:如何将书上的文字复制到手机上?如何简单快捷地将书本上想要摘录的语句识别出来?今天,小编就给大……开发IntellijIdea插件介绍在过去几年中,JetBrains的IntelliJ很快成为Java开发人员的顶级IDE。使IntelliJ对Java开发人员如此有吸引力的一个特性是使用插件扩展和创建……华为把鸿蒙商标买回来了在华为公布鸿蒙OS将于今年6月2日正式上线的消息后,网友们展开了激烈的讨论,其中大部分人都觉得这是一个好消息,鸿蒙系统的到来可以帮助国内打破谷歌安卓的垄断;而也有一些人认为,鸿……世界5G大会即将召开,联通的机会来了联通公司在2017年混改以来引入包括中国人寿,阿里巴巴,腾讯,京东,百度,苏宁等战略投资者认购90亿股份,联通股份也有62。8降到36。8。这次股改的目的是引入民资战略投资,从……老年人是不是带上助听器效果都不是很明显,但是还是一定要佩戴?助听效果不明显,是否指在所有环境下聆听均不理想吗?还是只在某些特别的环境,如噪声环境下,才效果不理想?安静环境中一对一对话,老人能听清百分之几多?有80吗?老人配了助听器后,是……iOS15Beta6先别急的升级!这10项全新改变,你应该了近期,苹果iOS15又开启了一周一更的频率,iOS15Beta6也在昨天凌晨如期发布,那么此次iOS15Beta6有哪些不一样的变化呢?据更新页面显示,iOS15Beta……中国家用电器研究院发布首批冰箱洗衣机声品质评测结果随着越来越多的家电产品走入家庭,与功能实用的家电产品相伴而来的则是家电噪声。针对消费者对家居声环境的要求越来越高,中国家用电器研究院设计研究与评测中心近期在中国家用电器研究院指……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网