0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Maven进行组件化发布(上)

jf_78858299 来源:小余的自习室 作者:小余的自习室 2023-03-30 11:36 次阅读

现如今已经不是以前单兵作战时代,越来越多的需求,促使我们项目去实现动态组件化开发。

这个时候组件化发布共享就显的尤为重要。

这篇文章我们就来讲解下如何使用Maven进行组件化发布

在讲解组件化发布之前,我们先来了解一些基础概念

基础概念:

1.POM

pom:全名Project Object Model 项目对象模型,用来描述当前maven项目发布模块的基础信息

pom主要节点信息如下:

配置 描述 举例('com.android.tools.build:gradle:4.1.1')
groupId 组织 / 公司的名称 com.android.tools.build
artifactId 组件的名称 gradle
version 组件的版本 4.1.1
packaging 打包的格式 aar

2.仓库

我们在开发中经常使用到第二/三方插件或者第二/三方库,就是存储在仓库中的

2.1:仓库种类:

  • 本地仓库 :存储在本地设备中的仓库以及远程仓库中下载保存的仓库,统称为本地仓库

  • 私有仓库 :公司内部仓库,比如是有maven私服搭建的局域网仓库

  • 中央仓库 :开源社区仓库,我们平时使用的第三方插件或者类库一般都存储在中央仓库,比如Maven Central,阿里的国内镜像库等

    图片

    1.maven库介绍.png

2.2:仓库构建顺序:

  • 1.在本地仓库中查找对应的类库,没有找到执行2
  • 2.按照repositories中声明的仓库顺序,在私有仓库和中央仓库查找对应的类库,找到则将类库版本信息下载到本地仓库,没找到则执行3
  • 3.前面都没找到对应的类库或者类库版本,则抛出异常‘没找到对应的类库

图片

仓库执行顺序.awebp

2.3:仓库声明方式:

项目build.gradle:

buildscript {
    repositories {
        [Gradle 插件的仓库]        
    }
}
allprojects {
    repositories {
        [项目中所有模块依赖的仓库]  
    }
}

模块内build.gradle:

repositories{
    [当前模块依赖的仓库]
}

gradle支持的仓库类型:

repositories{
    maven { url '...' }
    ivy { url '...' }
    flatDir { dirs '...' }
}

常用的中央仓库:

google()        // https://dl.google.com/dl/android/maven2/
mavenCentral()   // https://repo.maven.apache.org/maven2/
jCenter()

网络不好的情况下,访问上面的中央仓库会有点慢:可以开考虑使用国内镜像代理

maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}

3.有了Release版本为啥还需要SNAPSHOT

区别

  • 1.Release版本每次升级都需要更新版本,而SNAPSHOT不需要更新版本,使用原版本即可
  • 2.Release版本如果版本没有更新不需要每次都去下载,除非本地仓库被清除,而SNAPSHOT版本每次编译都需要去中央仓库更新版本信息
  • 3.常规Release版本是发布上线的版本,SNAPSHOT是测试版本。
  • 4.版本名:Release版本:1.0.0,SNAPSHOT版本:1.0.0-SNAPSHOT

使用场景

A和B共同开发,如果A修改了代码,

使用常规Release版本则需要每次都发布一个新版本,如果不小心忘记增加版本,B则无法收到更新后的版本,

造成代码不同步,后期会出现不可预料的bug。

使用SNAPSHOT只要A发布了版本,B在每次编译时就可以立即收到A的类库更新信息,可以实时同步代码。

SNAPSHOT以牺牲编译时间换取代码之间的立即可见度,缺点就是在网络较差的情况下代码编译时间可能常常比较慢。

如何发布组件:

1.发布到本地仓库:

模块级:build.gradle

plugins {
    id 'groovy' // Groovy Language
//    id 'org.jetbrains.kotlin.jvm' // Kotlin
    id 'java-gradle-plugin' // Java Gradle Plugin

    id 'maven'
}
...
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url:uri('D:/maven_local'))
            pom.groupId = 'com.yuhb.upload'
            pom.artifactId = 'upload'
            pom.version = '1.0.1'
        }
    }
}

同步模块后:点击Gradle面板中对应模块下Tasks:upload里面的uploadArchives任务

如果执行成功:则会在对应的本地目录下找到类库信息:

2.搭建maven私服创建私有仓库:

简介

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

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:

这里有三个maven2类型仓库:

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

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

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

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

1.输入仓库名称

2.设置maven类型:

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

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


    
        ****class="hljs-name"id>
        ***class="hljs-name"url>
        
            trueclass="hljs-name"enabled>
            (always/ daliy/  interval/ never)class="hljs-name"updatePolicy>
        class="hljs-name"snapshot>
    class="hljs-name"repository>
class="hljs-name"repository>

updatePolicy:表示更新的频率:

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发
    +关注

    关注

    0

    文章

    367

    浏览量

    40818
  • maven
    +关注

    关注

    0

    文章

    30

    浏览量

    3705
  • gradle
    +关注

    关注

    0

    文章

    26

    浏览量

    704
收藏 人收藏

    评论

    相关推荐

    Maven 配置指南

    Maven 配置指南http://bbs.edu118.com/forum.php?mod=viewthread&tid=263&fromuid=231(出处: 信盈达IT技术社
    发表于 08-28 15:08

    在Linux平台下面安装Maven步骤说明

    Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目
    发表于 07-23 06:14

    Linux下的Maven安装方法

    关键步骤如下: 1. 下载Maven包. 2. 解压Maven包. 3.配置Maven系统参数,验证Maven是否正确安装.
    发表于 07-23 08:01

    HarmonyOS组件更新,新增700+开源组件

    适当的时间进行动画处理。如图5所示,ohos-spruce轻松实现了屏幕动画的编排。图5 ohos-spruce效果展示源码下载地址:https://gitee.com/hihopeorg
    发表于 11-18 11:17

    YoC组件发布开源操作指南须知

    ,然后将代码上传到master分支和dev分支,打上标签进行发布,标签遵循vX.Y.Z版本规则,初始版本号组件管理员自己定义。3.2 现有组件内部开发者提交
    发表于 03-09 07:37

    MyEclipse环境搭建Maven的开发环境

    一:Maven的下载安装 1、安装环境:win7 旗舰版 + MyEclipse2014 2、前置条件:JDK (本人用的jdk1.8) 3、maven下载: 说明:maven依赖于jdk,所以搭建
    发表于 11-28 16:13 1366次阅读

    Maven管理的jar没有发布到WEB-INFlib下应该如何解决详细方案说明

    本文档的主要内容详细介绍的是Maven管理的jar没有发布到WEB-INFlib下应该如何解决详细方案说明。
    发表于 05-30 17:07 9次下载
    <b class='flag-5'>Maven</b>管理的jar没有<b class='flag-5'>发布</b>到WEB-INFlib下应该如何解决详细方案说明

    干货:在Windows安装Maven及配置

    干货:在Windows安装Maven及配置
    的头像 发表于 06-20 09:24 2769次阅读
    干货:在Windows<b class='flag-5'>上</b>安装<b class='flag-5'>Maven</b>及配置

    基于AndroidCrop进行鸿蒙的开源图片裁剪组件

    本项目是基于开源项目 AndroidCrop 进行鸿蒙的移植和开发的,可以通过项目标签以及github地址( https://github.com/jdamcd/android-crop )追踪到
    发表于 03-23 09:53 2次下载

    如何使用Maven进行组件发布(中)

    这个时候组件发布共享就显的尤为重要。 这篇文章我们就来讲解下如何使用`Maven进行组件
    的头像 发表于 03-30 11:36 865次阅读
    如何使用<b class='flag-5'>Maven</b><b class='flag-5'>进行</b><b class='flag-5'>组件</b><b class='flag-5'>化</b><b class='flag-5'>发布</b>(中)

    如何使用Maven进行组件发布(下)

    这个时候组件发布共享就显的尤为重要。 这篇文章我们就来讲解下如何使用`Maven进行组件
    的头像 发表于 03-30 11:37 921次阅读

    如何理解Maven拉包原理,搞定Maven构建项目

    依赖是我们在使用 Maven 构建项目时最常使用的功能,通过依赖标签,我们可以直接从Maven仓库中引入对应的Jar包,无需手动再将Jar添加到目录下了,可谓是十分方便,不过我们除了使用,还需要考虑多模块下依赖之间的关系。
    发表于 05-25 09:50 562次阅读
    如何理解<b class='flag-5'>Maven</b>拉包原理,搞定<b class='flag-5'>Maven</b>构建项目

    idea配置了maven但不显示pom

    Maven 正确安装,应该会显示 Maven 的版本信息。 接下来,我们需要配置 Maven 的环境变量。在 Windows ,可以按如下步
    的头像 发表于 12-06 14:17 2986次阅读

    idea如何添加maven

    Maven是一个开源的项目管理工具,它提供了一种简单的方式来管理项目的依赖关系、构建过程和发布部署。本文将详细介绍如何将Maven添加到你的项目中,并使用它来管理你的项目。 第一步:安装Mav
    的头像 发表于 12-06 14:56 1166次阅读

    使用Nexus在本地搭建npm、yum和maven私有仓库

    使用Nexus在本地搭建npm、yum和maven私有仓库 为保证在无互联网的情况下,可正常搭建、构建项目,并自动部署项目,本系统采用Nexus+Jenkins+Maven+Gitlab开源
    的头像 发表于 08-21 14:46 261次阅读
    使用Nexus在本地搭建npm、yum和<b class='flag-5'>maven</b>私有仓库