2013-04-09 30 views
1

我试图添加buildnumber maven插件以包含来自mercurial的hgchangeset。这在终端中运行时非常适合我(我在Mac OSX上)。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.2</version> 
    <executions> 
     <execution> 
     <phase>validate</phase> 
     <goals> 
      <goal>create</goal> 
      <goal>hgchangeset</goal> // The specific goal I'm interested in 
      <goal>create-timestamp</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doCheck>false</doCheck> 
     <doUpdate>false</doUpdate> 
     <revisionOnScmFailure>true</revisionOnScmFailure> 
     <!-- format of the property 'buildNumber' --> 
     <format>{0,date,MMdd-HHmm}</format> 
     <items> 
     <item>timestamp</item> 
     </items> 
    </configuration> 
    </plugin> 
</plugins> 

然而,在Eclipse和詹金斯运行的时候,我得到这个错误:

[INFO] EXECUTING: /bin/sh -c cd /Users/Shared/Jenkins/Home/jobs/proj/workspace && hg id -i 
[ERROR] 
EXECUTION FAILED 
    Execution of cmd : id failed with exit code: 127. 
    Working directory was: 
    /Users/Shared/Jenkins/Home/jobs/proj/workspace 
    Your Hg installation seems to be valid and complete. 
    Hg version: NA (OK) 

登录到该服务器作为用户“詹金斯的,我可以执行:hg id -i就好了,我看到了正确的输出,因为hg二进制文件位于我的$PATH上,并在控制台中识别。

同样,Eclipse给出相同的输出。我想这是因为在终端maven版本可以看到我的hg二进制文件在/usr/local/bin,但Eclipse和Jenkins不能。

有什么方法可以告诉Maven在该位置使用hg?我不在乎它是否必须硬编码,因为我们所有的计算机上的二进制位置都是相同的。

在此先感谢

回声$ PATH 在/ usr/bin中:/ bin中:/ usr/sbin目录:/ sbin目录:在/ usr/local/bin目录:在/ usr/X11/bin中:在/ usr /本地/ git/bin

回答

1

看看buildnumber-maven-plugin的代码,似乎没有办法为hg可执行文件提供前缀,或者覆盖实际构建的命令行。

因此,我建议修改Jenkins构建代理配置,以便您调整用于查找hgPATH。你可以这样做以下的Jenkins Distributed Builds setup指令 - 通常(取决于你构建的奴隶如何设置),你有几个选择:

  • 修改launch-slave shell脚本
  • 修改.profile(或同等学历)对于运行构建从
  • 修改在詹金斯UI代理配置,它允许传递环境变量来生成代理用户

任何这些应该允许您调整合作构建代理使用的PATH的十个内容。

祝你好运!

0

我遇到了与eclipse和maven相同的问题 - 尽管我的终端报告了包含二进制文件路径的$PATH,但eclipse中的maven插件没有找到它。

我很快就意识到了这个问题:Eclipse已经从UI而不是终端启动,所以它没有从终端继承环境变量,其中包括$PATH。这可以通过快速启动Eclipse从终端

$./eclipse 

现在测试,在日食这种情况下,行家能够找到二进制好吗。

为了从UI中启动进入eclipse的路径,您需要将路径添加到/etc/paths

相关问题