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

    xiaoxiao2022-07-12  126

    一、本地依赖方式

    由于要使用第三方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

    打开内部搭建的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/78804637https://ouyangpeng.blog.csdn.net/article/details/56872556https://blog.csdn.net/qq_31459039/article/details/81361496https://blog.csdn.net/u011424451/article/details/87378439https://stackoverflow.com/questions/30157575/why-should-i-include-a-gradle-dependency-as-aarhttps://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


    最新回复(0)