Publicación invalida ‘mavenJava’: múltiples artefactos con la misma extensión y clasificador.
Tengo varios artefactos ZIP que me gustaría publicar con el mismo ID de artefacto usando el complemento maven-publish Gradle (kts), pero sigo obteniendo el siguiente error:
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').
Antecedentes:
Considera la siguiente estructura del proyecto:
.
├── aSrcFiles
│ ├── a-1.txt
│ └── a-2.txt
├── bSrcFiles
│ ├── b-1.txt
│ └── b-2.txt
├── build
│ └── dist
└── build.gradle.kts
Y aquí está el archivo build.gradle.kts
:
group = "org.demo"
version = "DEV-SNAPSHOT"
plugins {
id("maven-publish")
}
repositories {
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)
}
}
}
Al ejecutar la tarea maven-publish
publishToMavenLocal
con esta configuración, falla al publicar en el repositorio ‘mavenLocal’. Este problema solo ocurre cuando introduzco otro artefacto con la misma extensión (por ejemplo, otro archivo ZIP).
¿Estoy haciendo algo mal? Saludos.
davy.ai
Solución:
El mensaje de error indica que tienes múltiples artefactos con la misma extensión y clasificador (
zip
,null
). En tu archivobuild.gradle.kts
, estás publicando dos artefactos con el mismo identificador de artefacto (demo
), lo cual está causando el error.Para solucionar esto, puedes agregar un clasificador a cada artefacto para diferenciarlos. Por ejemplo, puedes modificar tu archivo
build.gradle.kts
para incluir lo siguiente:Esta modificación agrega un clasificador a cada artefacto, lo que los hará únicos y les permitirá ser publicados con el mismo identificador de artefacto.
Después de hacer este cambio, deberías poder ejecutar la tarea
publishToMavenLocal
sin encontrar el error.¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta o inquietud adicional.