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

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

3天內不再提示

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

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

實戰(zhàn)中maven私服接入:

第三方lib庫的上傳操作

使用as創(chuàng)建一個新的項目,在新建項目下創(chuàng)建一個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

設置好后,執(zhí)行uploadArchives任務,這個時候我們本地的lib_vedio庫就會上傳到我們之前搭建的maven私服上:

這里因為我們上傳了兩個版本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'

這樣就可以在我們項目中愉快使用類庫啦。

3.如何發(fā)布到Github倉庫

如果我們需要開源我們的代碼就需要將倉庫發(fā)布到公共倉庫中:

步驟1:在項目級build.gradle中設置

buildscript {
    repositories {
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
    }
}

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

步驟2:在模塊級build.gradle設置如下

apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.xxx' // xxx為github 的用戶名

步驟3:將源碼pushgithub

步驟4:在github上創(chuàng)建 Release Tag

圖片

release tag.png

步驟5:打開https://jitpack.io 網址, 點擊look up

圖片

jitpack.png

然后會顯示出對應的編譯版本信息:

紅色代表編譯失敗

藍色代表編譯成功

可通過日志查看編譯錯誤原因:

圖片

編譯失敗信息.png

步驟6:類庫引入:在項目級 build.gradle 聲明遠程倉庫,在模塊級 build.gradle 中依賴類庫。

項目級build.gradle

buildscript {
    repositories {
...
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        ...
        classpath 'com.github.ByteYuhb.a_gradle_plugin_sample:uploadversion:1.0.3'
    }
}

這里我們上傳的是一個gradle插件庫,所以需要在buildscript中的dependencies聲明插件版本信息

關于Gradle自定義插件的編寫可以參考這篇文章:

Gradle筑基篇(五)-Gradle自定義插件實戰(zhàn)

模塊級build.gradle

apply plugin: 'com.yuhb.upload'

versionInfo {
    versionName = '1.0.0'
    versionCode = 1
    versionUpdateInfo = '當前是第一個版本:初始apk'
}
引入插件的group和擴展信息

結果

在編譯期:打印出了Gradle插件中的信息:

Task :app:uploadTask
name:1.0.0 code:1 info:當前是第一個版本:初始apk

4.指定發(fā)布二進制文件:

使用新版 Maven 插件,可以直接以指定二進制文件的方式發(fā)布組件。例如:

apply plugin: 'maven-publish'

publishing {
    publications {
        [任務名](MavenPublication) {
            groupId MAVEN_GROUP_ID
            artifactId MAVEN_ARTIFACTID
            version MAVEN_VERSION
            artifact([文件路徑])
        }
    }
    repositories {
        maven {
            // 發(fā)布倉庫路徑
            url MAVEN_RELEASE_URL
        }
    }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 開發(fā)
    +關注

    關注

    0

    文章

    370

    瀏覽量

    40844
  • maven
    +關注

    關注

    0

    文章

    30

    瀏覽量

    3713
  • gradle
    +關注

    關注

    0

    文章

    26

    瀏覽量

    719
收藏 人收藏

    評論

    相關推薦

    Maven 配置指南

    區(qū))Maven 配置發(fā)生有三個級別:Project – 靜態(tài)配置在pom.xmlInstalltion – 這個配置在maven的一次安裝User – 這個配置指定部分用戶這樣區(qū)分就清晰了 – 項目定義
    發(fā)表于 08-28 15:08

    【新功能】企業(yè)級Maven私有倉庫服務結束公測,全面開放使用

    的settings.xml文件,那么用戶需要自行將私有倉庫的配置信息添加到該文件。具體可以參考Maven私有倉庫服務。通過云效上傳二方庫到私有倉庫如果想通過流水線發(fā)布二方庫到私有倉庫,可以先在項目代碼庫根目錄
    發(fā)表于 06-20 15:50

    Linux下的Maven安裝方法

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

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

    源文件引用(build.gradle)開發(fā)者對使用的組件有優(yōu)化需求的時候,可以進行源文件引用,把源碼下載下來后同步修改。優(yōu)化之后,還可以把源碼貢獻到開源倉。dependencies
    發(fā)表于 11-18 11:17

    如何在嵌入式容器Jetty或Tomcat運行帶有Maven的Java Web應用程序

    在開發(fā)Java Web應用程序時,從“真實”環(huán)境獲得快速反饋非常實用。 在本文中,我將探討如何在嵌入式容器Jetty或Tomcat運行帶有Maven的Java Web應用程序。 在
    發(fā)表于 12-16 06:24

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

    過程中提交代碼到組件開發(fā)倉庫,直到組件功能完成。2.1.5 貢獻發(fā)布組件開發(fā)者將組件貢獻合入YoC,需要按照以下章節(jié)3
    發(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下應該如何解決詳細方案說明

    本文檔的主要內容詳細介紹的是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下應該如何解決詳細方案說明

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

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

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

    idea配置了maven但不顯示pom

    配置 Maven 是一個開發(fā)者常見的任務,通過 Maven 可以更方便地管理項目依賴和構建過程。在配置 Maven 的過程,我們可能會遇到一些問題,比如沒有正確顯示 pom 文件。本
    的頭像 發(fā)表于 12-06 14:17 ?3236次閱讀

    ideamaven無法解析插件是怎么回事

    Maven是一個軟件項目管理和理解工具,它使用一個項目對象模型(POM)文件來描述項目的結構和依賴關系。Maven的目標是簡化項目的構建過程,提高開發(fā)人員的效率。 在Maven的項目構建過程
    的頭像 發(fā)表于 12-06 14:18 ?6097次閱讀

    idea如何添加maven

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

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

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