2009-06-29 11 views
0

ローカルWindows環境またはRedhatビルドサーバーで同じantスクリプトを使用してビルドを行いたいとします。Ant:動的プロパティの参照

私は2つのファイル(build_unix.properties & build_windows)に変数 'buildDirectory'を持っています。私は環境に応じて変数を設定したい。

<osfamily property="os.family"/> 
<property file="./build_${os.family}.properties" /> 
<property name="tmp-base.folder" value="${buildDirectory}/tmp/"/> 

私も

<if> 
    <os family="unix"/> 
    <then> 
     <property file="./build_unix.properties" /> 
    </then> 
    <else> 
     <property file="./build_windows.properties" /> 
    </else> 
</if> 

任意のアイデアを試してみましたか?

+0

問題文の場所のように見えるのプロパティファイルが含まれるであろうように、あなたはまた、build-common.propertiesにプロパティを移動することができます。ここからのプロパティは、アクセスしようとしたときにまだ解決されていない可能性があります。 –

答えて

0

if ... then ... elseバージョンが動作すると思います。それは明らかに私はいくつかの余分なエコーを追加して、あなたのビルドがあなたが思っていることをやっていることを確認することはできません。

  1. thenとelseのエコーは、どのパスが実行されているかを特定できるようにします。
  2. プロパティにプレフィックスを追加して(例えば、<プロパティファイル= "..." prefix = "test" />)、< echoproperties prefix = "test" />を追加して、あります。
1

最初にos.familyプロパティを自動的に設定する方法を聞いていますか?

<available file="C:\\" property="os.family" value="windows" /> 
    <available file="/usr/bin/" property="os.family" value="unix" /> 

ああ:

もしそうなら、ここで一つのアプローチです!編集された質問は、あなたが求めているもの(これではない)をより明確にしています。あなたはOSのファミリを決定するためにant-contribから "osfamily"タスクを使用しています。しかし、私はant-contribなしでantをちょうど使っている人のためにこの答えを残しておきます。

0

次の2つのファイルを持つことができます。

<copy file="build-${os.family}.properties" tofile="build.properties"> 

がメインbuild.xmlは、単にbuild.propertiesファイルを参照することができ、あなたの:build-unix.propertiesbuild-windows.properitesとあなたのinitターゲットに、あなたは、単にコピーを行います。

これは正常に動作させるためには非常に難しいので、build.propertiesファイルにビルドサーバーのすべてのプロパティを保持し、Windowsの場合はローカルのオーバーライドをbuild-local.propertiesに入れてください。ビルドファイルは、次の順序

<property file="build-local.properties"/> 
<property file="build-common.properties"/> 
<property file="build.properties"/> 
関連する問題