實(shí)戰(zhàn)中maven私服接入:
第三方lib庫(kù)的上傳操作
使用as創(chuàng)建一個(gè)新的項(xiàng)目,在新建項(xiàng)目下創(chuàng)建一個(gè)lib庫(kù),命名為:lib_vedio:并在lib_vedio的build.gradle工程文件下面,引入maven庫(kù):
實(shí)現(xiàn)uploadArchives的task方法:這個(gè)方法用于上傳lib庫(kù):
plugins {
id 'com.android.library'
id 'maven'
}
//上傳的類庫(kù)名稱
def _artifactId = this.getName()
//類庫(kù)版本
def pomVersionName = '1.0.1'
def pomName = this.getName()
//類庫(kù)描述
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中設(shè)置的全局變量:
NEXUS_REPOSITORY_URL=http://localhost:8081/repository/anna_release/
POM_GROUPID=com.anna.android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123456
設(shè)置好后,執(zhí)行uploadArchives任務(wù),這個(gè)時(shí)候我們本地的lib_vedio庫(kù)就會(huì)上傳到我們之前搭建的maven私服上:
這里因?yàn)槲覀兩蟼髁藘蓚€(gè)版本1.0.0和1.0.1
切記:
如果當(dāng)前倉(cāng)庫(kù)選擇的是release屬性:則每次上傳的版本不能一致,需要在原版本基礎(chǔ)上增加
如果選擇的是snapshot屬性:則可以在不增加版本號(hào)的前提下,修改同一版本的代碼并上傳。
maven私服倉(cāng)庫(kù)的接入:
我們?cè)陧?xiàng)目的build.gradle文件中引入maven庫(kù):
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庫(kù)文件:
implementation 'com.anna.android:lib_video:1.0.1'
這樣就可以在我們項(xiàng)目中愉快使用類庫(kù)啦。
3.如何發(fā)布到Github倉(cāng)庫(kù)
如果我們需要開(kāi)源我們的代碼就需要將倉(cāng)庫(kù)發(fā)布到公共倉(cāng)庫(kù)中:
步驟1:在項(xiàng)目級(jí)build.gradle中設(shè)置
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:在模塊級(jí)build.gradle設(shè)置如下
apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.xxx' // xxx為github 的用戶名
步驟3:將源碼push到github上
步驟4:在github上創(chuàng)建 Release Tag

release tag.png
步驟5:打開(kāi)https://jitpack.io 網(wǎng)址, 點(diǎn)擊look up

jitpack.png
然后會(huì)顯示出對(duì)應(yīng)的編譯版本信息:
紅色代表編譯失敗
藍(lán)色代表編譯成功
可通過(guò)日志查看編譯錯(cuò)誤原因:

編譯失敗信息.png
步驟6:類庫(kù)引入:在項(xiàng)目級(jí) build.gradle 聲明遠(yuǎn)程倉(cāng)庫(kù),在模塊級(jí) build.gradle 中依賴類庫(kù)。
項(xiàng)目級(jí)build.gradle
buildscript {
repositories {
...
maven { url 'https://jitpack.io' }
}
dependencies {
...
classpath 'com.github.ByteYuhb.a_gradle_plugin_sample:uploadversion:1.0.3'
}
}
這里我們上傳的是一個(gè)gradle插件庫(kù),所以需要在buildscript中的dependencies聲明插件版本信息
關(guān)于Gradle自定義插件的編寫(xiě)可以參考這篇文章:
Gradle筑基篇(五)-Gradle自定義插件實(shí)戰(zhàn)
模塊級(jí)build.gradle
apply plugin: 'com.yuhb.upload'
versionInfo {
versionName = '1.0.0'
versionCode = 1
versionUpdateInfo = '當(dāng)前是第一個(gè)版本:初始apk'
}
引入插件的group和擴(kuò)展信息
結(jié)果:
在編譯期:打印出了Gradle插件中的信息:
Task :app:uploadTask
name:1.0.0 code:1 info:當(dāng)前是第一個(gè)版本:初始apk
4.指定發(fā)布二進(jìn)制文件:
使用新版 Maven 插件,可以直接以指定二進(jìn)制文件的方式發(fā)布組件。例如:
apply plugin: 'maven-publish'
publishing {
publications {
[任務(wù)名](MavenPublication) {
groupId MAVEN_GROUP_ID
artifactId MAVEN_ARTIFACTID
version MAVEN_VERSION
artifact([文件路徑])
}
}
repositories {
maven {
// 發(fā)布倉(cāng)庫(kù)路徑
url MAVEN_RELEASE_URL
}
}
}
-
開(kāi)發(fā)
+關(guān)注
關(guān)注
0文章
378瀏覽量
42151 -
maven
+關(guān)注
關(guān)注
0文章
30瀏覽量
4049 -
gradle
+關(guān)注
關(guān)注
0文章
26瀏覽量
1051
發(fā)布評(píng)論請(qǐng)先 登錄
Maven 配置指南
【新功能】企業(yè)級(jí)Maven私有倉(cāng)庫(kù)服務(wù)結(jié)束公測(cè),全面開(kāi)放使用
在Linux平臺(tái)下面安裝Maven步驟說(shuō)明
Linux下的Maven安裝方法
HarmonyOS組件更新,新增700+開(kāi)源組件
如何在嵌入式容器Jetty或Tomcat中運(yùn)行帶有Maven的Java Web應(yīng)用程序
YoC組件發(fā)布開(kāi)源操作指南須知
Maven管理的jar沒(méi)有發(fā)布到WEB-INFlib下應(yīng)該如何解決詳細(xì)方案說(shuō)明
如何使用Maven進(jìn)行組件化發(fā)布(下)
如何理解Maven拉包原理,搞定Maven構(gòu)建項(xiàng)目
idea配置了maven但不顯示pom
idea中maven無(wú)法解析插件是怎么回事
idea如何添加maven
使用Nexus在本地搭建npm、yum和maven私有倉(cāng)庫(kù)
如何使用Maven進(jìn)行組件化發(fā)布(中)
評(píng)論