0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Maven進行組件化發(fā)布(上)

jf_78858299 ? 來源:小余的自習室 ? 作者:小余的自習室 ? 2023-03-30 11:36 ? 次閱讀

現(xiàn)如今已經(jīng)不是以前單兵作戰(zhàn)時代,越來越多的需求,促使我們項目去實現(xiàn)動態(tài)組件化開發(fā)。

這個時候組件化發(fā)布共享就顯的尤為重要。

這篇文章我們就來講解下如何使用Maven進行組件化發(fā)布

在講解組件化發(fā)布之前,我們先來了解一些基礎(chǔ)概念

基礎(chǔ)概念:

1.POM

pom:全名Project Object Model 項目對象模型,用來描述當前maven項目發(fā)布模塊的基礎(chǔ)信息

pom主要節(jié)點信息如下:

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

2.倉庫

我們在開發(fā)中經(jīng)常使用到第二/三方插件或者第二/三方庫,就是存儲在倉庫中的

2.1:倉庫種類:

  • 本地倉庫 :存儲在本地設(shè)備中的倉庫以及遠程倉庫中下載保存的倉庫,統(tǒng)稱為本地倉庫

  • 私有倉庫 :公司內(nèi)部倉庫,比如是有maven私服搭建的局域網(wǎng)倉庫

  • 中央倉庫 :開源社區(qū)倉庫,我們平時使用的第三方插件或者類庫一般都存儲在中央倉庫,比如Maven Central,阿里的國內(nèi)鏡像庫等

    圖片

    1.maven庫介紹.png

2.2:倉庫構(gòu)建順序:

  • 1.在本地倉庫中查找對應的類庫,沒有找到執(zhí)行2
  • 2.按照repositories中聲明的倉庫順序,在私有倉庫和中央倉庫查找對應的類庫,找到則將類庫版本信息下載到本地倉庫,沒找到則執(zhí)行3
  • 3.前面都沒找到對應的類庫或者類庫版本,則拋出異?!?code>沒找到對應的類庫’

圖片

倉庫執(zhí)行順序.awebp

2.3:倉庫聲明方式:

項目build.gradle:

buildscript {
    repositories {
        [Gradle 插件的倉庫]        
    }
}
allprojects {
    repositories {
        [項目中所有模塊依賴的倉庫]  
    }
}

模塊內(nèi)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()

網(wǎng)絡(luò)不好的情況下,訪問上面的中央倉庫會有點慢:可以開考慮使用國內(nèi)鏡像代理

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?

區(qū)別

  • 1.Release版本每次升級都需要更新版本,而SNAPSHOT不需要更新版本,使用原版本即可
  • 2.Release版本如果版本沒有更新不需要每次都去下載,除非本地倉庫被清除,而SNAPSHOT版本每次編譯都需要去中央倉庫更新版本信息
  • 3.常規(guī)Release版本是發(fā)布上線的版本,SNAPSHOT是測試版本。
  • 4.版本名:Release版本:1.0.0,SNAPSHOT版本:1.0.0-SNAPSHOT

使用場景

A和B共同開發(fā),如果A修改了代碼,

使用常規(guī)Release版本則需要每次都發(fā)布一個新版本,如果不小心忘記增加版本,B則無法收到更新后的版本,

造成代碼不同步,后期會出現(xiàn)不可預料的bug。

使用SNAPSHOT只要A發(fā)布了版本,B在每次編譯時就可以立即收到A的類庫更新信息,可以實時同步代碼。

SNAPSHOT以犧牲編譯時間換取代碼之間的立即可見度,缺點就是在網(wǎng)絡(luò)較差的情況下代碼編譯時間可能常常比較慢。

如何發(fā)布組件:

1.發(fā)布到本地倉庫:

模塊級: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任務

如果執(zhí)行成功:則會在對應的本地目錄下找到類庫信息:

2.搭建maven私服創(chuàng)建私有倉庫:

簡介

maven私服其實就是在部門·局域網(wǎng)·中設(shè)置一個maven倉庫,所有在局域網(wǎng)中的開發(fā)人員都可以使用該倉庫:

PS:私服中可以添加自己本地的倉庫,也可以代理中央倉庫中的包。畢竟對于一些網(wǎng)絡(luò)比較差的環(huán)境,去中央倉庫里面獲取數(shù)據(jù)是一個很耗時的操作

優(yōu)點

1.節(jié)省自己的外部帶寬:

2.加速構(gòu)建過程

3.可以部署第三方構(gòu)件

4.提高穩(wěn)定性,增強控制

5.降低中央倉庫的負荷

圖片

maven私服優(yōu)勢.png

如何搭建Maven私服

1.去官網(wǎng)下載 maven私服啟動器 nexus:

地址:https://www.sonatype.com/

2.下載后,配置環(huán)境變量后:

在命令行輸入:nexus /run

3.nexus啟動成功后:在瀏覽器中輸入:
http://localhost:8081/
  • 啟動界面如下:

圖片

2.nexus界面.png

點擊右上角的sign in按鈕:

輸入用戶名和密碼

用戶名和密碼系統(tǒng)會提示在哪個目錄下

4.登錄成功后:
  • 點擊導航欄的設(shè)置按鈕-->repository進入倉庫列表

圖片

3.倉庫搭建.png

圖片

4倉庫.png

  • 點擊create Repository創(chuàng)建一個新的本地局域網(wǎng)倉庫:

因為我們是為Android項目創(chuàng)建的maven倉庫選擇maven2:

這里有三個maven2類型倉庫:

*hosted*:本地局域網(wǎng)私服,像官方倉庫一樣,提供本地私庫功能

*proxy*:提供代理其他倉庫的功能,表示這個repository可以代理遠程倉庫,比如jcenter google 等遠程中央倉庫

*group*:組合多個倉庫為一個地址使用

這里我們選擇hosted倉庫即可,大家可以根據(jù)自己需求選取

1.輸入倉庫名稱

2.設(shè)置maven類型:

*release*:表示是一個該倉庫存儲的是一個release版本的第三方庫

*snapshot*:表示存儲的是一個不穩(wěn)定第三方庫,需要進程去私服或者中央倉庫拉數(shù)據(jù):


    
        ****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版本一樣,不需要重復拉取

點擊確定后就創(chuàng)建的一個maven私服:

點擊該倉庫就可以看到對應的url,這個url就是我們私服的地址。需要在項目中引用:

經(jīng)過上面的步驟后,我們就搭建好了一個maven私服,局域網(wǎng)內(nèi)用戶都可以拉取使用

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    40844
  • maven
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    3713
  • gradle
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    719
收藏 人收藏

    評論

    相關(guān)推薦

    Maven 配置指南

    Maven 配置指南http://bbs.edu118.com/forum.php?mod=viewthread&tid=263&fromuid=231(出處: 信盈達IT技術(shù)社
    發(fā)表于 08-28 15:08

    在Linux平臺下面安裝Maven步驟說明

    Apache Maven,是一個軟件(特別是Java軟件)項目管理及自動構(gòu)建工具,由Apache軟件基金會所提供?;陧椖繉ο竽P停s寫:POM)概念,Maven利用一個中央信息片斷能管理一個項目
    發(fā)表于 07-23 06:14

    Linux下的Maven安裝方法

    關(guān)鍵步驟如下: 1. 下載Maven包. 2. 解壓Maven包. 3.配置Maven系統(tǒng)參數(shù),驗證Maven是否正確安裝.
    發(fā)表于 07-23 08:01

    HarmonyOS組件更新,新增700+開源組件

    適當?shù)臅r間進行動畫處理。如圖5所示,ohos-spruce輕松實現(xiàn)了屏幕動畫的編排。圖5 ohos-spruce效果展示源碼下載地址:https://gitee.com/hihopeorg
    發(fā)表于 11-18 11:17

    YoC組件發(fā)布開源操作指南須知

    ,然后將代碼上傳到master分支和dev分支,打上標簽進行發(fā)布,標簽遵循vX.Y.Z版本規(guī)則,初始版本號組件管理員自己定義。3.2 現(xiàn)有組件內(nèi)部開發(fā)者提交
    發(fā)表于 03-09 07:37

    MyEclipse環(huán)境搭建Maven的開發(fā)環(huán)境

    一:Maven的下載安裝 1、安裝環(huán)境:win7 旗艦版 + MyEclipse2014 2、前置條件:JDK (本人用的jdk1.8) 3、maven下載: 說明:maven依賴于jdk,所以搭建
    發(fā)表于 11-28 16:13 ?1376次閱讀

    Maven管理的jar沒有發(fā)布到WEB-INFlib下應該如何解決詳細方案說明

    本文檔的主要內(nèi)容詳細介紹的是Maven管理的jar沒有發(fā)布到WEB-INFlib下應該如何解決詳細方案說明。
    發(fā)表于 05-30 17:07 ?9次下載
    <b class='flag-5'>Maven</b>管理的jar沒有<b class='flag-5'>發(fā)布</b>到WEB-INFlib下應該如何解決詳細方案說明

    干貨:在Windows安裝Maven及配置

    干貨:在Windows安裝Maven及配置
    的頭像 發(fā)表于 06-20 09:24 ?2792次閱讀
    干貨:在Windows<b class='flag-5'>上</b>安裝<b class='flag-5'>Maven</b>及配置

    基于AndroidCrop進行鴻蒙的開源圖片裁剪組件

    本項目是基于開源項目 AndroidCrop 進行鴻蒙的移植和開發(fā)的,可以通過項目標簽以及github地址( https://github.com/jdamcd/android-crop )追蹤到
    發(fā)表于 03-23 09:53 ?2次下載

    如何使用Maven進行組件發(fā)布(中)

    這個時候組件發(fā)布共享就顯的尤為重要。 這篇文章我們就來講解下如何使用`Maven進行組件
    的頭像 發(fā)表于 03-30 11:36 ?887次閱讀
    如何使用<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'>發(fā)布</b>(中)

    如何使用Maven進行組件發(fā)布(下)

    這個時候組件發(fā)布共享就顯的尤為重要。 這篇文章我們就來講解下如何使用`Maven進行組件
    的頭像 發(fā)表于 03-30 11:37 ?942次閱讀

    如何理解Maven拉包原理,搞定Maven構(gòu)建項目

    依賴是我們在使用 Maven 構(gòu)建項目時最常使用的功能,通過依賴標簽,我們可以直接從Maven倉庫中引入對應的Jar包,無需手動再將Jar添加到目錄下了,可謂是十分方便,不過我們除了使用,還需要考慮多模塊下依賴之間的關(guān)系。
    發(fā)表于 05-25 09:50 ?599次閱讀
    如何理解<b class='flag-5'>Maven</b>拉包原理,搞定<b class='flag-5'>Maven</b>構(gòu)建項目

    idea配置了maven但不顯示pom

    Maven 正確安裝,應該會顯示 Maven 的版本信息。 接下來,我們需要配置 Maven 的環(huán)境變量。在 Windows ,可以按如下步
    的頭像 發(fā)表于 12-06 14:17 ?3236次閱讀

    idea如何添加maven

    Maven是一個開源的項目管理工具,它提供了一種簡單的方式來管理項目的依賴關(guān)系、構(gòu)建過程和發(fā)布部署。本文將詳細介紹如何將Maven添加到你的項目中,并使用它來管理你的項目。 第一步:安裝Mav
    的頭像 發(fā)表于 12-06 14:56 ?1223次閱讀

    使用Nexus在本地搭建npm、yum和maven私有倉庫

    使用Nexus在本地搭建npm、yum和maven私有倉庫 為保證在無互聯(lián)網(wǎng)的情況下,可正常搭建、構(gòu)建項目,并自動部署項目,本系統(tǒng)采用Nexus+Jenkins+Maven+Gitlab開源
    的頭像 發(fā)表于 08-21 14:46 ?332次閱讀
    使用Nexus在本地搭建npm、yum和<b class='flag-5'>maven</b>私有倉庫