如何在Docker构建文件中构建maven

f3temu5u  于 2023-08-03  发布在  Maven
关注(0)|答案(2)|浏览(130)

我一直在拼命地试图弄清楚是否有可能在jenkins代理上用docker构建文件构建一个mvn项目。运行管道时出现的错误是[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile

pipeline {
    agent {
        dockerfile { 
            filename 'DockerFile.build'
        }
    }
    environment {
        JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el8_2.x86_64"
    }
    stages {
        stage('Build DockerFile') {
            steps {
                echo "building docker image"
                sh "echo 1 | alternatives --config java"
                sh "java -version"
                sh "echo ${JAVA_HOME}"

                git branch: "develop", credentialsId: 'cred_id', url: "git@bitbucket.org:repo.git"
                dir("repo"){
                    sh "mvn clean install -X"
                }
            }
        }
    }
}

字符串
DockerFile.build

FROM centos

RUN yum update -y
RUN yum install -y java-11-openjdk-devel
RUN yum install -y java-11-openjdk

RUN yum install -y maven

ENV HOME=${home}


关于echo 1 | alternatives --config java的一行是切换到java 11。如有任何帮助,我们将不胜感激。

9lowa7mx

9lowa7mx1#

似乎你有一个docker构建文件(Dockerfile),你想要构建,这样你就有了一个可重用的镜像。一旦你有了镜像,你就可以将它推送到注册表(比如Dockerhub),或者在里面安装了应用程序代码的情况下运行它。如果您首先想将映像推送到注册表,则可以将其下拉并运行它。就像你拉下任何其他Docker镜像并运行它一样。
我最近在这里回答了一个类似的问题:Dockerfile无法使用Maven构建应用-没有为此构建指定目标也许这有帮助?
看起来您有一个错误,因为您试图直接在jenkins主机上构建,而不是在安装了maven/java 11的docker容器中构建。
这是一个常见的错误,认为你是在一个主机上的docker容器中,而事实上你只是在主机上,容器在其中运行,而你没有意识到。检查docker ps -a以获取容器ID,然后使用docker exec -it bashdocker exec -it sh打开容器中的一个终端

yfwxisqw

yfwxisqw2#

docker {
            image 'maven:3-alpine'
            args '-v $HOME/.m2:/root/.m2'
        }

字符串
需要挂载.m2目录。在Caching Contents下面:https://www.jenkins.io/doc/book/pipeline/docker/

相关问题