从Spring-Shell中删除命令

时间:2015-04-29 15:59:15

标签: java spring spring-shell

我希望使用Spring-Shell为技术支持团队构建诊断实用程序。我们的想法是将可执行文件jar放在系统上,运行应用程序并让它运行一堆诊断程序。

我想禁用/删除从org.springframework.shell.commands包中自动加载的一些命令,我​​无法弄清楚如何做到这一点。有可能吗?

如果不这样做,我想自定义帮助命令,以便我可以输出自己的帮助。我甚至无法实现这一点,但我能够弄清楚如何从用户点击 TAB 时显示的命令列表中删除它们。

@CliAvailabilityIndicator({"!", "//", "script","system"})
public boolean isAvailable()
{
    return false;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果要排除某些内置命令。将--disableInternalCommands参数传递给main函数(请参阅上一篇文章),并将org.springframework.shell.commands包添加到spring组件扫描路径,并使用exculde过滤器删除内置命令。

<强>弹簧壳的plugin.xml

<beans>
    <context:component-scan base-package="com.foo.bar.commands, org.springframework.shell.commands" >
        <context:exclude-filter type="regex" expression=".*(ScriptCommands|DateCommands|SystemPropertyCommands|VersionCommands)" />
    </context:component-scan>
</beans>