Maven干扰Jenkins发布构build脚本

我有一个Jenkins Maven作业,它有一个用BASH编写的构build脚本。 定期在post脚本运行时,似乎某种Maven操作会干扰BASH脚本,导致构build失败。

这里是Jenkins控制台的一些示例输出

+ version_override='Downloading: http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml Downloading: http://clojars.org/repo/org/codehaus/mojo/maven-metadata.xml Downloading: http://oss.sonatype.org/content/repositories/releases/org/apache/maven/plugins/maven-metadata.xml Downloading: http://oss.sonatype.org/content/repositories/releases/org/codehaus/mojo/maven-metadata.xml 

看看我的BASHvariables是如何从Maven下载得到一个值的? 现在我不会确定这是怎么回事。 也许只有两个输出stream同时进入控制台,一个来自Maven更新repo,另一个来自我的BASH后期构build脚本。 无论哪种方式,Maven下载似乎干扰我的BASH脚本,因为它最终崩溃的构build。

 + read config_path + '[' '!' -z http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml ']' + http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml /usr/share/build-utils/lib/java.sh: line 115: http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml: No such file or directory 

这绝对看起来像Maven输出蔓延到我的BASH脚本!

我几乎肯定这是Maven寻找更新。 奇怪的是,为什么它会与后期构build脚本并行运行。 即使如此,它怎么可能会干扰所述脚本的运行时? 真奇怪!

另外一个原因,我确定我的后期构build脚本没有任何问题。 每次出现这个错误时,我都会再次运行这个版本,并且可以正常工作。 只有当Maven更新构build失败时。

我不在乎Maven是否想要查找更新,但有什么方法可以configuration它,以便我的构build脚本之前发生回购更新?

终于搞明白了! 我正在使用一个Maven插件通过一个Maven插件来提取模块版本,基于这个SO文章 。

该命令产生这样的输出

 [INFO] --- maven-help-plugin:2.1.1:evaluate (default-cli) @ master-parent --- [INFO] No artifact parameter specified, using 'com.myorg:master-parent:pom:0.3.02' as project. [INFO] 0.3.02 [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] 

我最初的BASH调用来提取版本号

 version_override=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '[INFO]') 

然而,每隔一段时间(并且不确定在哪里控制这个),Maven都会为模块更新(我认为)。 这是虚假的下载输出来自哪里,从上面分配我的任务。

我现在修改了命令如下

 version_override=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | egrep -v '[INFO]|Downloading:' | tr -d ' \n') 

可能仍然不是子弹的证据,谁知道这个命令会有什么其他的输出,例如某天,而不是领先的[INFO]行,也许会吐出[ERROR]或其他东西…

无论如何,暂时收紧。 我真的认为这是一个Jenkins / Maven的问题,但事实certificate这只是一个BASH脚本问题!