IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Android使用Nexus搭建maven私服仓库,并发布带jar/aar包的module(二) -> 正文阅读

[Java知识库]Android使用Nexus搭建maven私服仓库,并发布带jar/aar包的module(二)

上一篇文章我们简单介绍了,搭建本地nexus服务并关联到了本地的maven仓库。下面进入正题,开始打包上传我们的module,并使用。





前言

由于存在jar包时,我们是无法直接将module打包成aar的,也就是说aar包中不能再包含aar包,否则会在打包时抛出异常,导致打包失败。于是,我们采用了一个折中的办法,就是先把module中的jar包传到我们之前的搭建的私服,然后在本module中通过依赖的方式引用。


一、上传module中的jar包

上传jar包的方式有两种,一种是直接在nexus中上传,另一种是在module中通过代码上传。

先看第一种。

我们通过文章一的搭建后,nexus已经作为服务在我们的本地运行了。我现在访问http://localhost:8081/?这个地址可以直接打开我们的nexus面板。

然后你就到了上传jar的页面了。

切记要把上面的我框起来的地方勾上,不然在Android studio中jar包下不下来的。这个坑搞了我小半天。

然后,你就把上面的必填项填上即可。

file那里点击 browse 是选择要上传的jar的位置 ,extension是jar包的后缀是jar或者aar。

然后上面填的信息对应的生成的依赖大致如下:

api 'com.peanutnovel.reader.admanager:android-query-full:0.26.7@jar'

填写好了之后,一定注意要勾选 Generate a POM file with these coordinates 别忘了 很重要。

然后点击upload 上传成功。

?接下来:

到此,第一种方法结束。

第二种方法:

在module的build.gradle中,添加

apply plugin: 'maven'
def android_query_full_File = file('libs/android-query-full.0.26.7.jar')

artifacts {
    archives android_query_full_File
}

uploadArchives {
    repositories.mavenDeployer {
        repository(url: maven.LOCAL_REPO_URL) {
            authentication(userName: maven.USER_NAME, password: maven.PASSWORD)
        }
        pom.project {
            version "0.26.7"
            artifactId "android_query_full_File" // 可以随意取,一般取jar包的名字
            groupId "com.peanutnovel.reader.admanager"  // 可以随意取,一般取包名
            packaging "jar"  //aar 或者 jar
            description "jar包"
        }
    }
}

其中要上传的jar包是放在libs文件夹下的。

我上面代码中出现的maven是另外定义的,你们没有的直接修改为对应的字符串就行。

然后同步一下。再点击studio右边的gradle图标。

打开后

?点击红框里面的uploadArchives 运行任务,即可上传成功,然后查看使用和方法一的一样,不再赘述。

如果上面没有出现任务的文件夹 或者提示not build task 什么的去设置里面,如下操作即可出现。

然后继续上面的上传。

完成后 ,我们开始使用gradle依赖引用的方式,替换jar的引用。此时别忘了,在项目中指定你的本地maven仓库哦。

具体如下:

在项目的gradle中指定本地的maven仓库:

allprojects {
    repositories {
        google()
        mavenCentral()

        maven {
            url "http://localhost:8081/repository/3rd/"
            credentials {
                username "admin"
                password "admin123"
            }
        }
     
    }
}

在module的gradle中,使用依赖引入jar包:

 api 'com.peanutnovel.reader.admanager:android-query-full:0.26.7@jar'

然后同步一下,即可在项目下外部库中查看到jar已经下载到本地。使用api引用是为了防止多层引用外层引用不到的情况。

如果有多个jar包,重复上传并引用即可。

二、上传module到私服并引用

上传module和方法二上传jar包基本是一样的。具体如下:

在module的gradle中添加

apply plugin: 'maven'
uploadArchives {
    repositories.mavenDeployer {
        repository(url: maven.LOCAL_REPO_URL) { //私服仓库地址
            authentication(userName: maven.USER_NAME, password: maven.PASSWORD)
        }

        pom.project {
            version maven.LIBRARY_VERSION// 版本号
            artifactId maven.ARTIFACTID // 项目名称(通常为类库模块名称,也可以任意)
            groupId maven.GROUP_ID  // 唯一标识(通常为模块包名,也可以任意)
            packaging maven.LIB_TYPE
            description maven.LIB_DESCRIPTION
        }
    }
}

上面的maven是我本地的配置和发布aar无关,可以直接改为对应的字符串,贴一下代码

maven = [
            //用户信息
            USER_NAME      : "admin",
            PASSWORD       : "admin123",

            //包信息
            ARTIFACTID     : "admanager",
            LIBRARY_VERSION: "1.0.6",
            GROUP_ID       : "com.peanutnovel.reader.admanager",
            LIB_TYPE       : "aar",
            LIB_DESCRIPTION: "dependences lib",


            //Mac下地址:file:///Users/<username>/my/local/repo
            //LOCAL_REPO_URL=file:///Users/apple/projects/maven #本地的地址
            //服务器地址
            LOCAL_REPO_URL : "http://localhost:8081/repository/3rd/"
    ]

配置完成后,同上面方法二一样,在任务中上传即可。

查看以及使用也是和上面一样的。

指定了本地仓库后,只需要添加依赖即可

implementation 'com.peanutnovel.reader.admanager:admanager:1.0.7@aar'

到这里基本上发布带jar包的module就结束了。

可是如果你的module中不仅有jar包,还有一些其他的第三方的依赖怎么办?上面的依赖,是无法引用到aar包中的第三方依赖的,可以换成这样的。

implementation('com.peanutnovel.reader.admanager:admanager:1.0.7@aar') { transitive=true }

添加transitive=true属性,即可。

如果你的module中还有其他第三方的maven仓库的引用,此时需要你在主项目中再次添加这些其他的maven仓库的引用。或者你不想每次都添加这些maven仓库,也可以把这些第三方的maven仓库加到你本地的私服中代理一下。

然后点击最下面的创建库 即可。

之后,为了更加省事,我们可以把代理库,加入到私服的仓库组中。回到上一页的仓库列表页面。

滚动到底部。

使用时可以:

就可以使用一个maven仓库来替代你上面的多个仓库了。

使用的话大致是这样的:

  maven { url 'http://localhost:8081/repository/maven-public/' }

到这里基本就可以了,有问题或者有更好的方法,欢迎评论。

与诸君共勉。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:04:23  更:2021-11-18 11:05:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:07:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码