【Maven学习】如何上传jar或aar包至Maven私服,让Android项目可以支持Maven库在线依赖的方式来使用jar包

一、本地依赖方式

由于要使用第三方jar包。而第三方给的SDK是jar包,并没有上传到Maven库,因此不支持Maven库在线依赖,所以需要如下所示的,在项目中手动集成jar包。

在这里插入图片描述

然后在build.gradle中 导入刚才的libs目录

在这里插入图片描述

dependencies {
    api fileTree(include: ['*.jar'], dir: 'libs')
}

这种方式本人不喜欢,因为习惯了使用Maven在线依赖的方式,因此想把这些jar包上传到Maven私服上,然后通过Maven在线依赖的方式来使用这些第三方jar包。

二、将jar包上传到Maven私服

2.1 登录Maven私服并打开【3rd party】这个Respsitory

  1. 打开内部搭建的Maven私服,比如我们内部的Maven私服网站为 http://xxx.xxxx.com:8081/nexus/
    在这里插入图片描述

2、点击右上角的【LogIn】按钮,进行登录
在这里插入图片描述
3、登陆之后点击左侧列表中的【views/respsitories】–>【Respsitories】 显示出所有的Respositories,然后以后点击【3rd party】。
因为我们要上传的是第三方的jar包,所以就放在【3rd party】这个Respsitory里面比较合适
在这里插入图片描述

点击【Browse Storage】可以看到所有已经上传到这个【3rd party】这个Respsitory里面jar包或者aar包

在这里插入图片描述

2.2 在【3rd party】这个Respsitory中上传第三方的jar包

  • 点击【Artifact Upload】面板,进行上传jar包操作
    在这里插入图片描述
    填写要上传的jar包的相关信息,如下所示:

在这里插入图片描述

2.2.1 填写【Select GAV Definition Source】

这一步主要是填写,我们上传jar包之后的一些产物在Maven中的属性,比如groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。

  • 参数【GAV Definition】
    第一个参数【GAV Definition】可以选择【GAV Parameters】和【From POM】两种方式,我们选择【GAV Parameters】
    在这里插入图片描述

如果选择【From POM】的方式,界面如下

在这里插入图片描述

  • 参数【Group】
    groupId 是(Maven)项目的唯一标识。Group ID必须满足 Java包名规范 ,这意味着是形如:org.apache.maven,org.apache.commons的格式。Maven不强制此规范,很多遗留的旧项目使用单个单词作为group ID。但是,很难用单个单词作为(新项目的)group ID,并将其提交到Maven中央仓库中。
    你可以创建任意数量的子分组。一种比较好的来划分groupId的颗粒度的方式是使用项目结构(package structure)。这是指,如果当前项目是一个多模块(module)的项目,可以通过在父groupId的基础上增加后缀的形式来定义,例如:

org.apache.maven,
org.apache.maven.plugins,
org.apache.maven.reporting

  • 参数【Artifact】
    artifact 是不带版本号的jar的名字,唯一要求是使用小写字母,且没有特殊符号。如果这是一个第三方的jar包,必须使用其被发布的包名。

例如:maven,commons-math

  • 参数【Version】

version 如果要发布,可以选择典型的数字和点号组成的版本号(1.0,1.1,1.0.1…)不要使用日期,因为它们通常和SNAPSHOT版本号联系在一起。如果是一个第三方的artifact,你必须使用它提供的版本号,无论这些版本号看起来多么奇怪,比如:2.0,2.0.1,1.3.1


我们这边上传的如下所示

在这里插入图片描述
那么我们如果上传成功的话,需要在Android 项目中的build.gradle中引用的话,用下面的形式
在这里插入图片描述

dependencies {
    api 'com.umeng.analytics:analytics-overseas:7.5.4'
}
  • 参数【Packaging】
    packaging【可选的,默认为jar】:
    当不定义packaging时,maven会使用默认值jar。

在这里插入图片描述

2.2.2 填写【Select Artifact(s) for Upload】

1、点击【Select Artifact(s) to Upload】按钮,选择需要上传的jar包。
在这里插入图片描述
2、点击【Add Artifact】按钮
点击【Add Artifact】按钮,自动生成下面的artifacts内容,上面的三个框空白了。
在这里插入图片描述
3、点击【Upload Artifact(s)】按钮,上传成功,如下所示
在这里插入图片描述

4.上传之后 点击【Browse Storage】面板,然后点击下【Refresh】按钮刷新下,就可以查看上传好的jar包
在这里插入图片描述

顺便将另外的一个jar包也上传上去,上传好后,如下所示

在这里插入图片描述

三、Maven在线依赖方式

刚刚我们已经将两个jar包上传了,现在可以直接在线依赖它们了。
在这里插入图片描述
在这里插入图片描述

dependencies {
   //api fileTree(include: ['*.jar'], dir: 'libs')
    api 'com.umeng.analytics:analytics-overseas:7.5.4'
    api 'com.umeng.sdk:common-overseas:1.5.4'
}

在这里插入图片描述

sync完毕之后,查看【External Libraies】里面就有刚刚Maven在线依赖引入的两个jar包
在这里插入图片描述

这样就方便多了!

四、关于上传AAR包

(ps: 更新2020年4月8日)
今天有同事下载了一些第三方的aar包,如何放在项目本地使用,我立马建议他将aar包上传到Maven私服。

4.1 上传aar

上传私服如下图所示
在这里插入图片描述
打包方式没有aar
在这里插入图片描述
点击上传
在这里插入图片描述
上传完后

在这里插入图片描述

4.2 引用上传到Maven私服的AAR

4.2.1 错误使用方式

 implementation 'com.youdao.asr:youdaoasr:1.0.0@aar'
 implementation 'com.youdao.audio:youdaoaudio:1.0.0@aar'

这样的写法 无法下载刚刚上传的AAR包

在这里插入图片描述

4.2.2 正确使用方式

参考博客:https://blog.csdn.net/u011424451/article/details/87378439
在这里插入图片描述
该博客的Nexus版本比我的版本新,我的版本暂时不支持这样的方式,因此 使用
添加结尾 @aar 的方式来引用

在项目中使用如下的代码,注意后面的@aar

 implementation 'com.youdao.asr:youdaoasr:1.0.0@aar'
 implementation 'com.youdao.audio:youdaoaudio:1.0.0@aar'

成功下载下来
在这里插入图片描述

以前在我之前的博客
【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服

上传的AAR库 不需要添加结尾 @aar 即可引用,是因为上传的脚本里面就写好了打包方式为aar
在这里插入图片描述
所以以脚本的形式上传的 直接不需要结尾 @aar 即可引用。

4.2.3 关于添加后缀@aar的作用

博客:
https://stackoverflow.com/questions/30157575/why-should-i-include-a-gradle-dependency-as-aar
在这里插入图片描述
翻译过来:
当您指定@后缀时,您将强制以您指定的格式(可能存在也可能不存在)下载库。 这很有用,例如 当作者忘记指定库是.aar和maven(或gradle,不确定)默认情况下将其视为.jar。 如果指定了@后缀,则不再下载此库的依赖项,因此您必须手动确保。

compile 'com.android.support:appcompat-v7:22.1.1@aar'
compile 'com.android.support:support-v4:22.1.1@jar'

为了确保在指定@后缀时下载了库的完整依赖树,您必须以以下方式编写它:

compile ('com.android.support:appcompat-v7:22.1.1@aar') {
    transitive = true
}

博客:https://www.cnblogs.com/lkc9/p/10813518.html 描述

一、.aar和.jar之间的区别。

‘.aar’可以包含源代码和资源,但是’.jar’只能包含源代码。

二、下载依赖库时的区别

当您在项目的build.gradle中包含一个带有后缀@arr的库时,该库将下载.aar后缀的库文件。如果没有,默认情况下将下载.jar的库文件。当然,您也可以添加后缀@jar使下载

.jar的库文件。

implementation 'com.android.support:appcompat-v7:22.1.1@aar'
implementation 'com.android.support:support-v4:22.1.1@jar'

五、参考资料

  • https://ouyangpeng.blog.csdn.net/article/details/78804637
  • https://ouyangpeng.blog.csdn.net/article/details/56872556
  • https://blog.csdn.net/qq_31459039/article/details/81361496
  • https://blog.csdn.net/u011424451/article/details/87378439
  • https://stackoverflow.com/questions/30157575/why-should-i-include-a-gradle-dependency-as-aar
  • https://www.cnblogs.com/lkc9/p/10813518.html

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/90482592
☞ 本人QQ: 3024665621
☞ QQ交流群: 123133153
☞ github.com/ouyangpeng
☞ oypcz@foxmail.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值