我需要在Sonatype上發布一個庫,放在我們公司自己的服務器上。我使用了maven-publish插件,實作如下。
apply plugin: 'maven-publish'。
任務 androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
if (project.plugins.findPlugin("com.android.library") ) {
from android.sourceSets.main.java.srcDirs.
from android.sourceSets.main.kotlin.srcDirs。
}
}
afterEvaluate {
出版 {
出版物 {
release(MavenPublication) {
groupId GROUP_ID
artifactId ARTIFACT_ID VERSION_NAME[/span
from components.release
artifact androidSourcesJar
pom {
name = ARTIFACT_ID
description = DESCRIPTION'library url'/span>
許可證 {
許可 {
name = 'License' 許可證的名稱
url = 'license url'/span>
}
}
開發者 {
開發者 {
id = 'developer id''developer name''dev mail'
}
}
scm {
connection = 'url.git'/span>
developerConnection = 'url.git''url.git'/span>
}
}
}
}
資源庫 {
maven {
url MAVEN_REPOSITORY_URL
憑證 {
username = USER_NAMEPASSWORD
}
}
}
}
}
該庫已成功發布,但當我使用它時,我必須指定我需要如下的aar。
implementation 'com.companyname.android:library-name:1.0.0@aar'
我應該怎么做才能在沒有aar規范的情況下使用它? 就像下面這樣。
implementation 'com.companyname.android:library-name:1.0.0'
所以Gradle可以找到ar檔案,并將其添加到外部庫中。
uj5u.com熱心網友回復:
你必須在你的出版物中定義aar作為工件:
artifact("$buildDir/outputs/aar/something-release.aar")
請看這個答案的一個簡單例子。
uj5u.com熱心網友回復:
我已經解決了這個問題。問題不在pom中,也不在我打包庫的方式中。而是我在Gradle中定義它的方式。我以前是這樣在Gradle根目錄下定義自定義maven倉庫的。
allprojects {
資源庫 {
google()
mavenCentral()
maven {
url "http://localhost:8081/repository/maven-releases/"。
憑證 {
username = "用戶名"/span>
password = "password"true)
metadataSources{
mavenPom()
}
}
}
}
然而,檔案中指出
"自Gradle 5.3以來,在決議元資料檔案時,無論是Ivy還是Maven,Gradle都會尋找一個標記,表明存在一個匹配的Gradle模塊元資料檔案。如果找到了,它將被用來代替Ivy或Maven檔案。
從Gradle 5.6開始,你可以通過在metadataSources宣告中添加ignoreGradleMetadataRedirection()來禁用這一行為。
所以我把它編輯成了以下內容。
allprojects {
repositories {
google()
mavenCentral()
maven {
url "http://localhost:8081/repository/maven-releases/"。
憑證 {
username = "用戶名"/span>
password = "password"true)
metadataSources{
mavenPom()
ignoreGradleMetadataRedirection()
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330187.html
標籤:
