2011-02-10 12 views
5

私はクロスプラットフォームのアプリケーションを使用しています。今では新しい要件が出てきました。Snow Leopard以降のLeopardを構築する場合は、別の方法でやる必要があります。Snow Leopardで条件付きでantターゲットを構築する方法

私は、WindowsとMacintoshなどを区別する方法を示すhttp://www.devdaily.com/blog/post/java/how-determine-operating-system-os-ant-build-scriptと、${os.version}のようなosの追加プロパティを示すhttp://www.jajakarta.org/ant/ant-1.6.1/docs/en/manual/api/org/apache/tools/ant/taskdefs/condition/Os.htmlを見てきました。

os.versionの値を比較するにはどうすればよいですか?それが10.6以上であれば、Snow Leopardのことを行うことができます。 Snow Leopard上で変数snow_leopardを1に設定できたら、残りの部分を把握することができると思います。

答えて

6

これにはcondition taskを使用できます。利用可能な条件は、osであり、hereです。

それはOSファミリ」のと同じように動作します:

<condition property="isSnowLeopard"> 
    <os family="mac" version="10.6.6" /> 
</condition> 

しかし、それはあなたが増分バージョン番号に入れて持っていることを意味 - 文字列が完全に一致していたバージョン。

OSXライオンが出てくるときは「あいまい」の代替のために、あなたは、このおそらく

<condition property="isSnowLeopard"> 
    <matches string="${os.version}" pattern="^10.6." /> 
</condition> 

のようなものをmatches条件を使用することができますが、あなたはこのようなパターンを拡張することもできます。

<condition property="isSnowLeopardOrGreater"> 
    <matches string="${os.version}" pattern="^10.[67]." /> 
</condition> 

10.7の個別チェックを導入してください。

+0

これは良いことです。私はより大きいかどうかを確認できるようにすることを好みましたが、パターンマッチングは実際にはOKにする必要があります。 –

1

ant-contribで提供される<if>タスクを使用すると、osバージョンの等価チェックを行うことで、これをある程度達成できます。

... 
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
    <classpath> 
     <pathelement location="/location/of/ant-contrib-1.0b3.jar"/> 
    </classpath> 
</taskdef> 
<target name="oscheck"> 
    <property name="osver" value="${os.version}"/> 
    <if> 
     <equals arg1="${os.version}" arg2="6.1"/> 
     <then> 
      <echo message="Windows 7"/> 
      ... 
     </then> 
    </if> 
</target> 
... 
+0

ありがとう、私はマーティンのソリューションを好むが、私はこれを念頭に置いておく。 –

関連する問題