- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试在 Jenkins Windows 从节点上构建一个 Java 项目,当我尝试运行任何 mvn
时来自 Jenkins 服务的从机上的命令,我收到一条错误消息,指出找不到该命令:
java.io.IOException: Cannot run program "mvn": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
...
注意:如果我直接登录机器,运行任何mvn
命令工作得很好。
Windows 从属节点设置
Maven is installed to the directory
D:\Apache\Maven
.Set system environment variables:
JAVA_HOME
=C:\Program Files\Java\jdk1.8.0_40
M2
=%M2_HOME%\bin
M2_HOME
=D:\Apache\Maven
The
PATH
system environment variable is set to%M2%;...
在 Jenkins 大师的网页上,如果我运行 Groovy 脚本 println System.getenv("PATH")
在 Windows 从属节点上,我可以看到对于 Maven 的 bin
具有正确的扩展路径目录。
我还可以验证 Maven 的 bin
可以通过运行以下命令查看目录:
Groovy Script:
println "ls -al D:/Apache/Maven/bin".execute().text
total 14
drwxr-xr-x 8 D-AUN-00 Administ 4096 Apr 20 12:35 .
drwxr-xr-x 9 D-AUN-00 Administ 4096 Mar 31 11:46 ..
-rw-r--r-- 1 D-AUN-00 Administ 230 Mar 31 11:46 m2.conf
-rwxr-xr-x 1 D-AUN-00 Administ 7085 Apr 20 11:49 mvn
-rw-r--r-- 1 D-AUN-00 Administ 6007 Mar 31 11:46 mvn.cmd
-rwxr-xr-x 1 D-AUN-00 Administ 1796 Mar 31 11:46 mvnDebug
-rw-r--r-- 1 D-AUN-00 Administ 1513 Mar 31 11:46 mvnDebug.cmd
-rwxr-xr-x 1 D-AUN-00 Administ 1843 Mar 31 11:46 mvnyjp
奇怪的是,如果我用 mvn.cmd
运行 Maven ,然后 Maven 运行得很好:
Groovy Script:
println "mvn.cmd --version".execute().text
Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-13T15:10:27-05:00)
Maven home: D:\Apache\Maven
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_40\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"
问题:是否有我遗漏或未正确设置的东西会导致 mvn
命令不被识别?
编辑: 我正在运行的构建使用自定义 Python bash 脚本来调用 Maven。该脚本还设置为运行其他语言(PHP、Ruby、.NET、Node)项目的构建,并且这些构建的工具都可以正常工作(composer
、bundle
、devenv.com
)。但是,我认为如果从属节点的脚本控制台在尝试运行 mvn
时返回相同的错误,那么构建的执行方式无关紧要。命令。
编辑 2: 我对此研究得越多,就越觉得这与 Jenkins 没有任何关系,而更多地与 shell 脚本在 Windows 上的执行方式有关。当我使用脚本控制台在从属节点上调用 Groovy 脚本时,Jenkins 只是将其写入从属节点上的临时文件并使用 sh -xe <script>
调用它。当我直接在 Windows 机器上尝试类似的方法时,每个基于脚本的命令(例如 mvn
、composer
)都无法从 shell 脚本中运行,除非我在命令前加上 sh
。 .这很不幸,因为我正在运行的脚本将来可能会在 Linux 或 Mac 节点上运行,我不想在其中乱扔特定于 Windows 的命令。我已经用 Git Bash 和 Msysgit 试过了,我得到了相同的结果。接下来,我将尝试使用 Cygwin 看看是否可行...
最佳答案
maven 安装文件夹在 Jenkins master 和 client 上应该相同。检查主从上的文件夹位置是否相同。
除此之外,您的环境。属性是正确的,但请检查您是否在用户或系统属性下添加了属性。如果您已在用户下添加属性并将 Jenkins 从站作为 Windows 服务启动,我认为 Jenkins 不会获取这些值。
关于windows - 在 Jenkins Windows 从节点上无法识别“mvn”命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757511/
我想创建一个 Jenkins 工作来启动其他 Jenkins 工作。这很容易,因为 Jenkins 模板项目插件允许我们创建“使用另一个项目的构建器”类型的构建步骤。然而,让我的情况更难的是我必须在其
我有一个简单的Windows批处理命令(robocopy),该命令返回零错误,但在Jenkins中始终被标记为失败。我想知道为什么? D:\ Jenkins \ jobs \ Jenkins Conf
我有两个 Jenkins 工作 - Jenkins Job1 和 Jenkins Job2。 我有多个应用程序并使用相同的 Jenkins 来构建应用程序。如果相同的应用程序在 Jenkins 中运行
我找不到这两者之间的区别。这些是相同的还是不同的。 最佳答案 第一个区别是支持(正如其他人所提到的)。 CloudBees 提供企业级支持以及经过全面审查和测试的 Jenkins 版本,该版本将在各种
是否可以指定在多次触发作业(A)的情况下,将先前的作业从队列中删除,并且如果有足够的可用插槽,则仅将最新的作业留在队列中或启动? 提前致谢! 最佳答案 您可以使用通过Groovy Script Plu
我有2位Jenkins主持人,并且希望First Jenkins在第一个结果的基础上基于“SUCCESS”触发远程Jenkins上的工作。 我看过各种插件,但它们似乎都表明一个Jenkins主机,可以
我的 jenkinsfile 有几个参数,每次我更新参数(例如删除或添加新输入)并将更改提交到我的 SCM 时,我没有在 jenkins 中看到相应更新的作业输入屏幕,我必须运行执行,取消它,然后查看
有没有办法在构建完成后触发相同的工作。我有一项工作需要运行,直到我手动中止它。有没有办法做到这一点? 最佳答案 最简单的方法是添加一个构建相同项目的后期构建步骤。将“构建后操作”-“构建其他项目”-“
我在 Linux 家中的特定用户下有工作/.jenkins 文件夹。我想与另一个用户一起启动 Jenkins,但重新使用另一个用户的 .jenkins 文件夹。我怎样才能做到这一点? Jenkins
我是 Jenkins 的新手,我不确定这是否可行,但我想设置一个 Web 界面,人们可以在其中单击“开始作业”,这将告诉 Jenkins 开始特定的构建作业。 Jenkins 是否有允许此类操作的网络
如何获取 Jenkins 凭证变量,即“mysqlpassword”,可供 Jenkins 声明性管道的所有阶段访问? 下面的代码片段工作正常并打印我的凭据。 node { stage('Gett
如何获取 Jenkins 凭证变量,即“mysqlpassword”,可供 Jenkins 声明性管道的所有阶段访问? 下面的代码片段工作正常并打印我的凭据。 node { stage('Gett
如何将构建参数从一个项目传递到另一个项目? 我们在 Jenkins 用户界面中是否有任何配置,可以在完成一个构建项目后将构建参数传递给另一个项目? 我能够触发另一个项目,但无法传递构建参数。我们是否有
我正在 Jenkins 中构建一个项目,并希望在它之后立即启动测试,请稍候 直到测试完成,然后运行另一个作业来分析结果。测试系统是一个封闭的系统(我不能修改它)所以为了检查测试是否完成我需要每 X 秒
我创建了一个测试 jenkins 作业管道。此作业具有字符串参数 - 'testVar' Jenkins文件代码: println("env.TESTVAR=" + env.TESTVAR) prin
我的 Jenkins 工作“构建”配置有 3 执行 shell - 构建任务 2 构建后操作 有没有办法获取每个构建任务和构建后操作的运行时间? 最佳答案 不直接,这就是为什么: 我使用 a Jenk
是否有任何适用于 Jenkins 的插件可以为 Jenkins 提供键值存储选项?功能接近的插件是凭据插件。目标是拥有一个存储全局配置参数的插件,并且此参数可用于 Jenkins 作业。 最佳答案 转
默认情况下,Jenkins 是否会保留每个构建中生成的所有构建和工件。或者它会在一段时间后删除它们。我知道我可以配置“丢弃旧版本”选项,但我想知道 Jenkins 的默认行为。 最佳答案 默认是保留所
Jenkins 构建中的每个文件参数“帮助文本”, Accepts a file submission from a browser as a build parameter. The uploade
情况:我在我的虚拟服务器上安装了 Jenkins 并设置了一个“自由式管道”。我通过 webhook push 将它连接到我的 github,它可以工作(当我推送到存储库时,在 jenkins 中启动
我是一名优秀的程序员,十分优秀!