当前位置: 首页 > 知识库问答 >
问题:

Jenkins - 如何在第二个 maven 命令中使用第一个 maven 命令的输出?

公良鸿风
2023-03-14

我正在使用 Jenkins 运行Maven目标。

命令1-

mvn test

(运行默认配置文件)(创建下面的命令 2 使用的一些输出文件夹)

命令 2 -

mvn test -P secondMavenProfileName

( pom.xml 中需要处理命令1创建的输出文件的第二个maven配置文件)。

如何在单个 Jenkins 作业中运行这两个命令?要求命令1的输出文件必须在命令2启动时生成,并且命令2应该能够对它们进行操作。

在 Jenkins 管道中实现这一目标的正确方法是什么?

当我简单地在 Jenkins 管道中一个接一个地添加上述两个命令时,作业失败,因为在命令 2 启动时未生成/写入第一个命令的输出文件。

共有1个答案

夏侯涵映
2023-03-14

管道脚本:

pipeline {
    agent any
    
    options {
        timestamps()
    }
    
    stages {
        
        stage('Create file and wait') {
            steps {
                bat 'mvn -help > mvn.txt'
                bat '@ping -n 10 localhost > nul'
            }
        }
        
        stage('Use file') {
            steps {
                bat 'type mvn.txt'
            }
        }
    }        
}

控制台输出摘录:

...
[Pipeline] stage
[Pipeline] { (Create file and wait)
[Pipeline] bat
00:52:23  
00:52:23  C:\Users\jenkins\AppData\Local\Jenkins\.jenkins\workspace\SO-68673343 Pipeline stage 1 output used in stage 2>mvn -help  1>mvn.txt 
[Pipeline] bat
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Use file)
[Pipeline] bat
00:52:33  
00:52:33  C:\Users\jenkins\AppData\Local\Jenkins\.jenkins\workspace\SO-68673343 Pipeline stage 1 output used in stage 2>type mvn.txt 
00:52:33  
00:52:33  usage: mvn [options] [<goal(s)>] [<phase(s)>]
00:52:33  
00:52:33  Options:
00:52:33   -am,--also-make                        If project list is specified, also
00:52:33                                          build projects required by the
00:52:33                                          list

...        ...                                    ...

00:52:33   -X,--debug                             Produce execution debug output
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
 类似资料:
  • 学习詹金斯。Windows7运行Jenkins-2.73.3,一个maven项目会给出以下输出: 20:29:11[test]$“C:\程序文件\java\jdk1.8.0_102/bin/java”-xmx1024m-xx:maxpermsize=256m-cp“C:\程序文件(x86)\jenkins\plugins\maven-plugin\WEB-INF\lib\maven33-agent

  • 我是maven的新手,我想同时执行2个java文件。我在StackOverflow中读了几篇文章,因为我对maven的了解有限,所以我不明白如何做到这一点。我在这里附加了我的pom.xml文件,我在mac终端中使用的命令行是: mvn编译执行:Java-dexec . main class = " org . parallel . parse thread 1 " 我有另一个名为ParseThre

  • 问题内容: 尝试读取的版本号时,我得到了很多其他行,需要忽略。我尝试阅读的手册,并尝试了以下命令: 我想知道这是否正确吗? 问题答案: 是的,这是从命令获取第一行输出的一种方法。 如果命令以相同的方式输出任何您想要捕获的标准错误,则需要将命令的标准错误重定向到标准输出流: 捕获第一行的方法还有很多,包括(在第一行之后退出),(仅打印第一行,但读取所有内容),(仅打印第一行,但再次读取所有内容)等。

  • 我想知道这是不是正确的做法?

  • 例如,我想通过npm脚本运行两个命令,第一个命令启动节点服务器。我发现第一个命令执行成功,但第一个命令停止执行第二个命令。如何才能成功执行这两个命令? 诺德蒙/bin/www启动节点服务器,而gulp dev不执行。

  • 问题内容: 我正在尝试在执行Windows批处理命令中运行命令的构建步骤下在Jenkins中运行命令。 我写了dir作为命令运行 当作业在Jenkins中运行时,该错误是由文件内容更改触发的,并显示以下错误 请参阅此问题。 问题答案: 回答这个问题:实际上,我还没有在Jenkins中将Windows安装为服务。因此,为此,我们需要转到“管理Jenkins”,然后单击“ Windows即服务”。即,

  • 问题内容: 但它们似乎更复杂。 我只是想将文件复制到Linux 命令调用的每个结果中。 这是怎么了?: 谢谢 问题答案: 这就是你想要的: 细分/解释: :调用find命令 :从当前工作目录开始搜索。 由于未指定深度标记,因此将递归搜索所有子文件夹 :查找具有明确名称的文件 :对于搜索结果,对它们执行其他命令 :复制以覆盖返回到的每个结果; 想一想每个搜索结果的去向。 :用于分隔要在其后运行的不同