Android组件化开发(一)--Maven私服的搭建

简介: 今天我们先不讲解项目框架,我们先来创建一个maven私服,来为我们的组件化框架项目先铺一条路子。
🔥 Hi,我是小余。

本文已收录到 GitHub · Androider-Planet 中。这里有 Android 进阶成长知识体系,关注公众号 [小余的自习室] ,在成功的路上不迷路!

前言

组件化,我们都有一些了解,基本上对于一些大型互联网App来说,都会采用组件化来开发,也是面试中的重中之重,本专栏会通过将一个实战项目扩展开发讲解整个项目知识体系。

下面这幅图就是我们后面需要讲解的实战项目框架:

组件化开发.png

今天我们先不讲解项目框架,我们先来创建一个maven私服,来为我们的组件化框架项目先铺一条路子。

简介

maven私服其实就是在部门·局域网·中设置一个maven仓库,所有在局域网中的开发人员都可以使用该仓库:

1.maven库介绍.png

PS:私服中可以添加自己本地的仓库,也可以代理中央仓库中的包。毕竟对于一些网络比较差的环境,去中央仓库里面获取数据是一个很耗时的操作

优点

1.节省自己的外部带宽:

2.加速构建过程

3.可以部署第三方构件

4.提高稳定性,增强控制

5.降低中央仓库的负荷

maven私服优势.png

如何搭建Maven私服

1.去官网下载 maven私服启动器 nexus:

地址:[https://www.sonatype.com/]()

2.下载后,配置环境变量后:

在命令行输入:nexus /run

3.nexus启动成功后:在浏览器中输入:

http://localhost:8081/
  • 启动界面如下:

2.nexus界面.png

点击右上角的sign in按钮:

输入用户名和密码

用户名和密码系统会提示在哪个目录下

4.登录成功后:

  • 点击导航栏的设置按钮-->repository进入仓库列表

3.仓库搭建.png

4仓库.png

  • 点击create Repository创建一个新的本地局域网仓库:

因为我们是为Android项目创建的maven仓库选择maven2:

5maven仓库.png

这里有三个maven2类型仓库:

*hosted*:本地局域网私服,像官方仓库一样,提供本地私库功能

*proxy*:提供代理其他仓库的功能,表示这个repository可以代理远程仓库,比如jcenter google 等远程中央仓库

*group*:组合多个仓库为一个地址使用

这里我们选择 hosted仓库即可,大家可以根据自己需求选取

6maven.png

1.输入仓库名称

2.设置maven类型:

*release*:表示是一个该仓库存储的是一个release版本的第三方库

*snapshot*:表示存储的是一个不稳定第三方库,需要进程去私服或者中央仓库拉数据:

<repositorys>
    <repository>
        <id>****</id>
        <url>***</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>(always/ daliy/  interval/ never)</updatePolicy>
        </snapshot>
    </repository>
</repository>

updatePolicy:表示更新的频率:

    `always`:每次都需要拉去 `    daliy`:表示每天需要拉取 `    interval`:按分钟拉取 `    nerver`:和release版本一样,不需要重复拉取

点击确定后就创建的一个maven私服:

点击该仓库就可以看到对应的url,这个url就是我们私服的地址。需要在项目中引用:

7maven.png

经过上面的步骤后,我们就搭建好了一个maven私服,局域网内用户都可以拉取使用

实战中maven私服接入:

1.第三方lib库的上传操作

使用as创建一个新的项目,在新建项目下创建一个lib库,命名为:lib_vedio:并在lib_vediobuild.gradle工程文件下面,引入maven库:

实现uploadArchives的task方法:这个方法用于上传lib库:

plugins {
    id 'com.android.library'
    id 'maven'
}

//上传的类库名称
def _artifactId = this.getName() 
//类库版本
def pomVersionName = '1.0.1'
def pomName = this.getName()
//类库描述
def pomDescription = 'the vedio library for all project'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url:NEXUS_REPOSITORY_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            pom.project {
                name pomName
                version pomVersionName
                description pomDescription
                artifactId _artifactId
                groupId POM_GROUPID
                packaging POM_PACKAGING
            }
        }
    }
}

里面一些变量是在gradle.properties中设置的全局变量:

NEXUS_REPOSITORY_URL=http://localhost:8081/repository/anna_release/
POM_GROUPID=com.anna.android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123456

设置好后,执行uploadArchives任务,这个时候我们本地的lib_vedio库就会上传到我们之前搭建的maven私服上:

8maven.png

这里因为我们上传了两个版本1.0.0和1.0.1

切记:

如果当前仓库选择的是release属性:则每次上传的版本不能一致,需要在原版本基础上增加

如果选择的是snapshot属性:则可以在不增加版本号的前提下,修改同一版本的代码并上传。

maven私服仓库的接入:

我们在项目的build.gradle文件中引入maven库:

buildscript {
    repositories {
        google()
        jcenter()
        maven {
            url = 'http://localhost:8081/repository/anna_release/'
            credentials {
                username = 'admin'
                password = 'admin123456'
            }
        }

    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url = 'http://localhost:8081/repository/anna_release/'
            credentials {
                username = 'admin'
                password = 'admin123456'
            }
        }
    }
}

并在app模块引入lib库文件:

implementation 'com.anna.android:lib_video:1.0.1'

这样就可以在我们项目中愉快使用类库啦。

总结

关于maven仓库就讲到这里了,后续会推出关于组件化开发各个组件的封装功能以及组件直接的前依赖关系的解耦也就是阿里开源框架aroute的使用,以及如何实现组件单独测试等问题。

相关文章
|
14天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
40 19
|
15天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
41 14
|
16天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
在数字时代,掌握安卓应用开发技能是进入IT行业的关键。本文将引导读者从零基础开始,逐步深入安卓开发的世界,通过实际案例和代码示例,展示如何构建自己的第一个安卓应用。我们将探讨基本概念、开发工具设置、用户界面设计、数据处理以及发布应用的全过程。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你提供宝贵的知识和技能,帮助你在安卓开发的道路上迈出坚实的步伐。
29 5
|
14天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
16天前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
15天前
|
搜索推荐 前端开发 测试技术
打造个性化安卓应用:从设计到开发的全面指南
在这个数字时代,拥有一个定制的移动应用不仅是一种趋势,更是个人或企业品牌的重要延伸。本文将引导你通过一系列简单易懂的步骤,从构思你的应用理念开始,直至实现一个功能齐全的安卓应用。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你提供必要的工具和知识,帮助你将创意转化为现实。
|
15天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
24 0
|
ARouter 开发工具 Android开发
Android 手把手带你搭建一个组件化项目架构(下)
本文介绍了组件化、组件分层、解决了组件的独立调试、集成调试、页面跳转、组件通信等。 其实会了这些后你基本可以搭建自己的组件化项目了。其实最大的问题还是分组分层、组件划分。这个就需要根据你的实际情况来设置。
569 0
Android 手把手带你搭建一个组件化项目架构(下)
|
开发工具 Android开发
Android 手把手带你搭建一个组件化项目架构(上)
目录 一、组件化 1.1 为什么使用组件化 1.2 模块化与组件化 1.2.1 模块 1.2.2 组件 1.3 组件化的优势 1.4 组件化需要解决的问题 二、组件分层 2.1 基础组件 2.2 common组件(lib_common) 2.3 功能组件 2.4 业务组件 2.5 主工程(app) 2.6 完成后项目 三、组件单独调试 3.1 创建组件(收藏) 3.2 动态配置组件的工程类型 3.2.1 build.gradle(module) 3.2.2 设置gradle.properties 3.2.3 动态配制插件(build.gradle)
875 0
Android 手把手带你搭建一个组件化项目架构(上)
|
Android开发 开发工具
《Android组件化架构》| 每日读本书
大公司的组件化指南,小公司的组件化革命,带你领略Android的组件化世界。每日搜罗最具权威专业书籍,更多图书请关注“每日读本书”。
1741 0

推荐镜像

更多
下一篇
DataWorks