2

Hudson、Ant 1.7、Tomcat 6.20、JDK 1.6、および JDK 1.5 を使用。すべてWindowsボックス上。

WAR ファイル用の Ant ビルド スクリプトは、リモート サーバーに保存されている JAR を使用します。リモート サーバーへのディレクトリ パスは、Windows のネットワーク ドライブとしてマップされます。build.properties ファイルは、JAR 依存関係へのパスを指定するために使用されます。コマンドラインまたはEclipseでAntを使用してビルドすると、WARは正常にビルドおよびデプロイされます。

build.properties の例:

lib.log4j=S:/Support/JARs/log4j-1.2.15.jar

上記のエントリでは、Windows で割り当てられたネットワーク ドライブは "S" ドライブです。

現在、ローカル ワークステーションで Hudson を評価しています。Hudson で、マップされたネットワーク ドライブ パスを JAR に使用しようとすると、ビルドが失敗します。JAR をローカル ディレクトリにコピーすると (C:/Support/JARs になるように)、ビルドは正常にコンパイルされ、WAR が作成されます。

マップされたネットワーク ドライブ パスを Hudson に適用させるにはどうすればよいですか? また、Hudson ユーザー インターフェイスで Ant 引数を渡す必要がないようにする方法はありますか?代わりに、代わりに実際に build.properties ファイルを使用しますか? Hudson は build.properties を読み取ることができないようです。

どうもありがとう。

マイク・クエンテル

4

2 に答える 2

8

hudson を Windows サービスとして実行しているとします。サービス環境は、通常のユーザーとは多少異なります。たとえば、ネットワーク権限が最小限またはまったくありません。また、ドライブ マッピングはログオン中に発生し、ユーザー セッションに固有です。そのため、ユーザーがログオフしてドライブがマップ解除された後もサービスを実行する必要がある場合があるため、サービスはこれらのドライブを実際には認識できません。

ネットワーク特権を持つアカウントを使用するように hudson サービスを構成し、ビルド スクリプトを変更して UNC パス (\server タイプのパス) を使用することができます。

もう 1 つの方法は、ログインしているユーザー アカウントから実行されているスレーブでビルドを行うことです。うまくいきますが、厄介です。

役立つ情報へのリンク:

  1. 情報: サービスとリダイレクトされたドライブ
  2. Windows サービスを作成する際のベスト プラクティスの説明
于 2009-08-17T06:40:16.020 に答える
0

Jim T さん、すばらしい回答をありがとうございます。

要約すると、Windows では、Tomcat インスタンスは Windows にマップされたドライブに対する権限を持っている必要があり (これらの権限を持つユーザー アカウントで Tomcat を実行するための 1 つのソリューション)、UNC パスを使用する必要があります (//remote_server_name/directory_path)。Linux では、リモートでマウントされた Windows ドライブが機能します (mount コマンドを使用)。

スレーブでビルドを行うという 2 番目の提案は試しませんでした。

于 2009-10-07T03:01:57.330 に答える