Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Jenkins中为每个从节点配置Maven安装? 症状_Java_Maven_Jenkins - Fatal编程技术网

Java 如何在Jenkins中为每个从节点配置Maven安装? 症状

Java 如何在Jenkins中为每个从节点配置Maven安装? 症状,java,maven,jenkins,Java,Maven,Jenkins,如果我在Jenkins(New Item=>Maven project,使用Maven插件)中创建一个带有所有默认值的Maven作业并运行它,我会得到以下错误: Started by user anonymous Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace ERROR: A Maven installation needs to be available for this project to

如果我在Jenkins(New Item=>Maven project,使用Maven插件)中创建一个带有所有默认值的Maven作业并运行它,我会得到以下错误:

Started by user anonymous
Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace
ERROR: A Maven installation needs to be available for this project to be built.Either your server has no Maven installations defined, or the requested Maven version does not exist.
Finished: FAILURE
Maven只需使用
mvn
即可从命令行完美运行

不可接受的变通办法 Maven安装有一个系统范围的Jenkins配置:Manage Jenkins=>Configure system=>Maven/Maven安装。如果我使用此web UI添加Maven安装(通过在
Maven_HOME
中提供预安装路径作为
/usr/share/Maven
),作业将成功运行

问:为什么是全局配置而不是特定于从属配置? 全局Jenkins配置没有意义:Maven是按从机运行的,而不是按Jenkins运行的

Jenkins运行作业的奴隶动物园可能包含具有各种平台、操作系统和环境的奴隶,其中不同版本的Maven安装在不同的位置

问题:如何配置每个从属节点的Maven安装? 将环境变量设置为从属节点上整个系统的相同路径无效

版本
Jenkins Master和Slave都是Linux主机。Jenkins版本:
1.598

如果不将Maven添加到主配置中,只需在每个从机上安装Maven,并使用它们自己可能不同的环境变量(例如版本3.2.5)


然后,每个Jenkins从机将只使用带有本地设置的Maven。

假设您的从机上安装了Java和Maven:

  • 转到管理Jenkins->管理节点
  • 单击要配置的节点上的配置图标
  • 向下滚动至“节点属性”并勾选“工具位置”复选框
  • 填写Java和Maven的选项

  • 它现在应该可以工作了(即使您已经在主机上配置了Maven安装)。

    对于我来说,解决方案是转到manageJenkins->Global Tool Configuration,然后在那里设置Maven。您可以通过/configureTools(例如:)访问此文件

    例如: Maven安装

    • 姓名:my_maven_3.3.9
    • MAVEN\u HOME:/usr/share/MAVEN
    其他常用工具的其他配置位于/configureTools:

    Git安装

    • 名称:my_git_2.11.0
    • Git可执行文件路径:/usr/bin/Git
    JDK安装

    • 名称:my_jdk_1.8.0_161
    • JAVA_HOME:/opt/jdk/jdk1.8.0_161

    为了简单起见,只需使用我的公共docker图像即可

    docker push chiraggupta95/jenkinswithmvn:v1
    
    如果你想自定义自己的图像,只需查看MyGitRepo以获得完整的说明

     https://github.com/chiraggupta95apr/jenkins
    

    快乐编码:)

    如果我不将Maven添加到主程序中,我仍然可以在Jenkins中创建Maven作业(New Item=>Maven项目)?这是一种特殊类型的作业,具有支持maven参数的UI。不,您必须创建一个自由式作业并调用maven Targets幸运的是,Jenkins作业的“maven项目”类型就是这个问题的原因。我已经使用过“自由式”工作,并决定为那些需要它们的人提供熟悉的UI功能(包括Jenkins对Maven Release插件的UI支持)。我会投票给需要它的人,但不会接受。每个Jenkins从机的Shell环境都可以包含运行任何可能脚本的所有先决条件。问题是,如果我们仍然必须在外部配置Maven,为什么Jenkins会有违反直觉的每主Maven配置,而不是每(可能不同的)从Maven配置。找不到节点属性
     https://github.com/chiraggupta95apr/jenkins