2009-07-23 1 views
3

私のAntビルドスクリプト(つまり、Runtime.getRuntime()。availableProcessors()から返される値からavailableProcessorsの数を取得したいと思います。それは、この値が含まれているか、私は、カスタムAntタスクを記述する必要がありますか?AntのavailableProcessorsの数を取得するには

答えて

2

write your custom ant taskは、クラスを書く

+0

このアプローチには小さな問題があります。あなたがサービスを構築するために使用するホストは、あなたのサービスが実行されるホストとは異なるかもしれません.....私は正しいのですか? @dfa –

-1

私はそのようなプロパティについて聞いたことがない、ので、私はあなたがカスタムタスクを記述するべきだと思います。

マヌー

0

JVMにはありませんそのようなプロパティを提供し、antはどちらも行いません。カスタムタスクを書く代わりに、次のいずれかを実行できます。

  1. プロセッサ数を標準出力に出力するJavaクラスを作成します。出力プロパティ属性を持つjavaタスクを使用して、値をantで使用するプロパティに設定します。
  2. 1つのプラットフォームを構築している場合は、execタスクを使用してプロセッサ数を標準出力に出力するネイティブを呼び出します。上記のように、outputproperty属性を使用して値をantで使用するプロパティに設定します。
+0

Runtime.getRuntime()availableProcessors()されますJVMによって提供される – dfa

+1

メソッド呼び出しはプロパティではないため、コードを取得する必要があります。 –

3

This post by Ilia Chemodanovように簡単なことはうまく2つの解決策を説明します。

は、Javaクラスをコンパイルしてインポートしない場合は、純粋なアリでそれを行うことができます。(それはかなりハックですが)

<target name="get-cores"> 
    <property environment="env"/> 
    <!-- support for Windows --> 
    <condition property="cores.count" value="${env.NUMBER_OF_PROCESSORS}"> 
     <os family="windows" /> 
    </condition> 
    <!-- support for Linux and Solaris (package SUNWgnu-coreutils is required) --> 
    <exec executable="nproc" outputproperty="cores.count" os="Linux,SunOS,Solaris"> 
     <arg value="--all"/> 
    </exec> 
    <!-- support for Mac OS X --> 
    <exec executable="sysctl" outputproperty="cores.count" os="Mac OS X"> 
     <arg value="-n"/> 
     <arg value="hw.ncpu"/> 
    </exec> 
    <echo message="Number of cores: ${cores.count}"/> 
</target> 
関連する問題