ハドソンにmavenでビルドされたプロジェクトがあります。C++ ソース コードをコンパイルして、プロジェクトの他の部分で使用される実行可能ファイルを作成します。Visual Studio ツール、特に問題を引き起こしているツールを使用します。midl プログラムをロードしようとしても、見つかりません。サーバーにログインすると、ハドソンが住んでいて、その特定のプロジェクトで mvn clean install を実行しようとすると、次のようになります。
D:\Hudson\jobs\{project-name}>mvn clean install
.
.
.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.876s
[INFO] Finished at: Mon Jan 14 21:56:18 PST 2013
[INFO] Final Memory: 8M/154M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (build-tlb) on project interop: Command execution failed.
Cannot run program "midl" (in directory "D:\Hudson\jobs\{project-name}"): CreateProcess error=2, The system cannot find the file specified -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
これを回避する方法は、Visual Studio ツールをロードすることです。
D:\Hudson\jobs\{project-name}>%VS100COMNTOOLS%\vsvars32.bat
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
それをした後、私はきれいなビルドを取得します:
D:\Hudson\jobs\{project-name}>mvn clean install
.
.
.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.331s
[INFO] Finished at: Mon Jan 14 21:59:06 PST 2013
[INFO] Final Memory: 13M/222M
[INFO] ------------------------------------------------------------------------
しかし、Hudson が自動ビルドを開始すると、これは機能しません。そのバットファイル(vsvars32.bat)をロードしようとしました:
pushd %VS100COMNTOOLS%
vsvars32.bat
popd
Maven プロセスを開始する前に、コンソール出力に次のように表示されるため、これが機能していることがわかります。
C:\Apps\MicrosoftVisualStudio-10.0\Common7\Tools>vsvars32.bat
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
しかし、midl が実際に使用されるポイントに到達するたびに、ビルドの失敗後に次の出力が得られます。
[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s)
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (build-tlb) on project interop: Command execution failed.
[DEBUG] Closing connection to remote
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (build-tlb) on project interop: Command execution failed. Cannot run program "midl" (in directory "D:\Hudson\jobs\{project-name}"): CreateProcess error=2, The system cannot find the file specified -> [Help 1]
Hudson 構成パネルで、環境変数ペア {VS100COMNTOOLS,C:\Apps\MicrosoftVisualStudio-10.0\Common7\Tools} も設定します。他に何をすべきかわかりません。どんな助けも感謝します。