如何封裝一個通用發布版本
步驟1:在項目根目錄下創建:
maven_publish.gradle
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
// 是否快照版本
def isSnapShot = Boolean.valueOf(MAVEN_IS_SNAPSHOT)
def versionName = MAVEN_VERSION
if (isSnapShot) {
versionName += "-SNAPSHOT"
}
// 組件信息
pom.groupId = MAVEN_GROUP_ID
pom.artifactId = MAVEN_ARTIFACTID
pom.version = versionName
// 快照倉庫路徑
snapshotRepository(url: uri(MAVEN_SNAPSHOT_URL)) {
authentication(userName: MAVEN_USERNAME, password: MAVEN_USERNAME)
}
// 發布倉庫路徑
repository(url: uri(MAVEN_RELEASE_URL)) {
authentication(userName: MAVEN_USERNAME, password: MAVEN_USERNAME)
}
println("###################################"
+ "\\nuploadArchives = " + pom.groupId + ":" + pom.artifactId + ":" + pom.version + "." + pom.packaging
+ "\\nrepository =" + (isSnapshot ? MAVEN_SNAPSHOT_URL : MAVEN_RELEASE_URL)
+ "\\n###################################"
)
}
}
}
這段腳本會讀取
MAVEN_IS_SNAPSHOT
配置參數,如果為 true,會在版本號后追加-SNAPSHOT
后綴,表示快照版本。隨后聲明了兩個倉庫:repository(…) 聲明的是 Release 倉庫地址,而 snapshotRepository(…) 聲明的是快照倉庫地址。Maven 會自動將版本號帶 -SNAPSHOT 后綴的組件發布到 snapshotRepository(…) 倉庫中,這樣就 自動將正式版本和快照版本分發的不同倉庫中。
步驟2:聲明項目級
gradle.properties配置參數:
MAVEN_SNAPSHOT_URL = /Users/yuhb/workspace/public/DemoHall/snapshotRepository
MAVEN_RELEASE_URL = /Users/yuhb/workspace/public/DemoHall/releaseRepository
MAVEN_USERNAME =
MAVEN_PASSWORD =
MAVEN_IS_SNAPSHOT = true
MAVEN_GROUP_ID = com.yuhb.demo
| 參數描述 |
MAVEN_SNAPSHOT_URL |
快照倉庫地址 |
MAVEN_RELEASE_UR |
發布倉庫地址 |
MAVEN_USERNAME |
倉庫賬號 |
MAVEN_PASSWORD |
倉庫密碼 |
MAVEN_IS_SNAPSHOT |
是否快照版本 |
MAVEN_GROUP_ID |
組織 / 公司的名稱 |
MAVEN_ARTIFACTID |
組件的名稱(在發布模塊配置) |
MAVEN_VERSION |
組件的版本(在發布模塊配置) |
步驟 3:在發布模塊應用腳本
apply from: '../maven.gradle'
...
步驟 4:在發布模塊配置參數 (模塊級配置參數會覆蓋項目級配置參數)
模塊級 gradle.properties
MAVEN_ARTIFACTID = maven
MAVEN_VERSION = v1.0.0
MAVEN_IS_SNAPSHOT = true
...
然后在Gradle面板中找到對應模塊下的任務uploadArchives,執行成功后就可以將組建發布對應的maven私服上了
本地aar文件引入的一些技巧:
模塊級build.gradle
dependencies {
...
api(name: 'lib-debug', ext: 'aar')
}
repositories {
flatDir {
dirs "libs"
}
}
這種方式如果其他模塊需要使用就不方便:
方法1
:
在項目級build.gradle
allprojects {
repositories {
google()
mavenCentral()
flatDir { dirs project(':aarlib').file('libs') } // 文件夾要放在某個 module 內
}
}
這種方式可以在本工程中使用,如果跨工程或者跨設備就不好使了
方法2
:二次打包aar發布到maven倉庫
apply plugin: 'maven-publish'
def libPath = project.getProjectDir().getAbsolutePath()
publishing {
publications {
lib1(MavenPublication) {
groupId MAVEN_GROUP_ID
artifactId "lib"
version "v1.0.0"
artifact(libPath + "/libs/lib.aar")
}
lib2(MavenPublication) {
groupId MAVEN_GROUP_ID
artifactId "lib2"
version "v1.0.0"
artifact(libPath + "/libs/lib2.aar")
}
}
repositories {
maven {
// 發布倉庫路徑
url MAVEN_RELEASE_URL
// 本地倉庫地址不適用賬號密碼
// > Failed to publish publication 'maven' to repository 'maven'
// > Authentication scheme 'all'(Authentication) is not supported by protocol 'file'
// credentials(PasswordCredentials) {
// username = MAVEN_USERNAME
// password = MAVEN_PASSWORD
// }
}
}
}
好了,本文就講解到這里了,基本涵蓋了關于Maven倉庫如何使用的大部分知識盲點,內容較多,大家可以收藏起來慢慢消化。
-
開發
+關注
關注
0文章
373瀏覽量
41353 -
maven
+關注
關注
0文章
30瀏覽量
3852 -
gradle
+關注
關注
0文章
26瀏覽量
854
發布評論請先 登錄
Maven 配置指南
HarmonyOS組件更新,新增700+開源組件
YoC組件發布開源操作指南須知
Maven管理的jar沒有發布到WEB-INFlib下應該如何解決詳細方案說明

Linux環境下安裝Maven的步驟

如何理解Maven拉包原理,搞定Maven構建項目

idea配置了maven但不顯示pom
idea如何添加maven
使用Nexus在本地搭建npm、yum和maven私有倉庫

評論