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.

Gradle publishToMavenLocal Publicar en MavenLocal con Gradle

Cuando uso gradle clean build publishToMavenLocal con

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}

utilizando gradle 7.1.
Funciona en la compilación local degradle. Sin embargo, cuando lo ejecuto en Jenkins, obtengo:

org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: La clase de contexto requerida hudson.FilePath falta
Quizás olvidaste rodear el código con un paso que proporcione esto, como: node

Cuando comento la sección de publicación en build.gradle, funciona en Jenkins.

¿Alguna idea?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el contexto de construcción, específicamente con la clase de contexto FilePath que falta. Esta clase está relacionada con operaciones de archivos, las cuales podrían no estar disponibles en Jenkins de forma predeterminada. Para solucionar esto, puedes intentar ejecutar la construcción en un nodo de trabajo de Jenkins, el cual tiene acceso al contexto requerido. Puedes hacer esto agregando el paso node a la definición de tu canalización, por ejemplo:

    pipeline {
        agent any
        stages {
            stage("Construcción") {
                steps {
                    node {
                        sh "gradle clean build publishToMavenLocal"
                    }
                }
            }
        }
    }
    

    Esto ejecutará la construcción en un nodo de trabajo de Jenkins, donde el contexto de FilePath debería estar disponible.

    Como alternativa, puedes intentar proporcionar el contexto faltante de forma manual, agregando un bloque withContext a la definición de tu canalización. Por ejemplo:

    pipeline {
        agent any
        stages {
            stage("Construcción") {
                steps {
                    withContext([filePath(hudson.FilePath)]) {
                        sh "gradle clean build publishToMavenLocal"
                    }
                }
            }
        }
    }
    

    Esto proporcionará el contexto requerido de FilePath a la construcción y permitirá que se ejecute correctamente en Jenkins.

    ¡Espero que esto ayude! Hazme saber si tienes alguna otra pregunta.

Comments are closed.