![](/img/trans.png)
[英]How can I get the source line number in error stack trace of a jar created by ant build?
[英]How can I get the number of availableProcessors in Ant
我想从我的Ant构建脚本获取availableProcessors的数量(即从Runtime.getRuntime()。availableProcessors()返回的值。是否存在包含此值的现有属性,或者我是否必须编写自定义ant任务?
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>
编写自定义ant任务 ,就像写一个类一样简单
JVM不提供这样的属性,也不提供ant。 您可以执行以下操作之一,而不是编写自定义任务:
就像@dfa提到的那样,编写自己的自定义任务是一个不错的选择。
但是,如果构建服务的主机与运行它的主机不同,则核心数将不同(您将获得构建服务的主机的可用处理器数)。
如果你不想那样,那么你可以在你的构建脚本中使用一个小的shell脚本,就像这样(对于像OS这样的UNIX):
$(/usr/bin/nproc --all)
我先检查命令是否存在, if(type /usr/bin/nproc)
....但这取决于你想如何实现它。
我从来没有听说过这样的属性,因此我认为你应该编写自定义任务。
马努
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.