1

from mercurialbuildnumberを含めるためにmavenプラグインを追加しようとしています。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 と Jenkins で実行すると、次のエラーが発生します。

[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)

そのサーバーにユーザー「jenkins」としてログインすると、実行できます。バイナリが自分のものであり、コンソールで認識されるためhg id -i、問題なく正しい出力が表示されます。hg$PATH

同様に、Eclipse でも同じ出力が得られます。これは、ターミナルでは maven ビルドがhgバイナリを表示できる/usr/local/binが、Eclipse と Jenkins が表示できないためだと思います。

hgその場所でMavenに使用するように指示する方法はありますか? バイナリの場所はすべてのコンピューターで同じであるため、ハードコードする必要があるかどうかは気にしません。

前もって感謝します

echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

4

2 に答える 2