es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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 archivo build.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:

    publishing {
        publications {
            create<mavenpublication>("mavenJava") {
                groupId = "org.demo"
                artifactId = "demo"
    
                artifact(assembleASrcFiles) {
                    classifier = "aSrcFiles"
                }
                artifact(assembleBSrcFiles) {
                    classifier = "bSrcFiles"
                }
            }
        }
    }
    

    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.

Comments are closed.