我想从我的Ant构建脚本获取availableProcessors的数量(即从Runtime.getRuntime()。availableProcessors()返回的值。是否存在包含此值的现有属性,或者我是否必须编写自定义ant任务?
答案 0 :(得分:3)
This post by Ilia Chemodanov很好地解释了两个解决方案。
如果您不想编译和导入Java类,您可以在纯蚂蚁中执行(虽然它非常hacky)
<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>
答案 1 :(得分:2)
答案 2 :(得分:0)
JVM不提供这样的属性,也不提供ant。您可以执行以下操作之一,而不是编写自定义任务:
答案 3 :(得分:0)
就像@dfa提到的那样,写下own custom task这是一个不错的选择。
但是,如果构建服务的主机与运行它的主机不同,那么核心数将不同(您将获得构建服务的主机的可用处理器数量)。
如果你不想这样,那么你可以在你的构建脚本中使用一个小的shell脚本,就像这样(对于像OS这样的UNIX):
$(/usr/bin/nproc --all)
我先检查命令是否存在,if(type /usr/bin/nproc)
....但这取决于你想要如何实现它。
答案 4 :(得分:0)
如果您在构建中声明:
<property runtime="runtime"/>
您使用属性 ${runtime.availableProcessors}
获得处理器的数量。
这需要 Ant 1.9.12+ 或 Ant 1.10.4+
答案 5 :(得分:-1)
我从未听说过这样的属性,因此我认为你应该编写自定义任务。
马努