我有多個 ZIP 工件,我想使用 maven-publish Gradle (kts) 插件使用相同的工件 ID 發布,但我一直收到錯誤訊息:
Execution failed for task ':publishMavenJavaPublicationToMavenLocal'.
> Failed to publish publication 'mavenJava' to repository 'mavenLocal'
> Invalid publication 'mavenJava': multiple artifacts with the identical extension and classifier ('zip', 'null').
背景:
考慮以下專案結構:
.
├── aSrcFiles
│ ├── a-1.txt
│ └── a-2.txt
├── bSrcFiles
│ ├── b-1.txt
│ └── b-2.txt
├── build
│ └── dist
└── build.gradle.kts
這是以下build.gradle.kts檔案:
group = "org.demo"
version = "DEV-SNAPSHOT"
plugins { `maven-publish` }
repositories(RepositoryHandler::mavenCentral)
val assembleASrcFiles = tasks.register<Zip>("assembleASrcFiles") {
archiveFileName.set("demo-${project.version}-aSrcFiles.zip")
destinationDirectory.set(layout.buildDirectory.dir("dist"))
from(layout.projectDirectory.dir("aSrcFiles"))
}
val assembleBSrcFiles = tasks.register<Zip>("assembleBSrcFiles") {
archiveFileName.set("demo-${project.version}-bSrcFiles.zip")
destinationDirectory.set(layout.buildDirectory.dir("dist"))
from(layout.projectDirectory.dir("bSrcFiles"))
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
groupId = "org.demo"
artifactId = "demo"
artifact(assembleASrcFiles)
artifact(assembleBSrcFiles)
}
}
}
使用此設定運行maven-publish任務publishToMavenLocal無法發布到存盤庫“mavenLocal”。僅當我引入具有相同擴展名的另一個工件(例如另一個 ZIP 檔案)時,才會出現此問題。
我做錯了什么嗎?問候。
uj5u.com熱心網友回復:
您需要為每個 ZIP 任務設定存檔分類器:
val assembleASrcFiles = tasks.register<Zip>("assembleASrcFiles") {
archiveClassifier.set("aSrcFiles")
// ...
}
val assembleBSrcFiles = tasks.register<Zip>("assembleBSrcFiles") {
archiveClassifier.set("bSrcFiles")
// ...
}
來自Maven POM 參考:
分類器區分由相同 POM 構建但內容不同的工件。它是一些可選的任意字串 - 如果存在 - 被附加到版本號之后的工件名稱。
作為此元素的動機,請考慮例如提供面向 Java 11 的工件但同時仍支持 Java 1.8 的工件的專案。第一個工件可以配備分類器 jdk11,第二個工件配備 jdk8,以便客戶可以選擇使用哪個。
分類器的另一個常見用例是將次要工件附加到專案的主要工件。如果您瀏覽 Maven 中央存盤庫,您會注意到分類器源和 javadoc 用于部署專案源代碼和 API 檔案以及打包的類檔案。
例如,現在在您的其他專案依賴項中,您可以按如下方式使用它們:
dependencies {
runtimeOnly("org.demo:demo:${version}:aSrcFiles@zip")
runtimeOnly("org.demo:demo:${version}:bSrcFiles@zip")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401732.html
標籤:行家 等级 pom.xml 发布 gradle-kotlin-dsl
