2015-04-29 4 views
0

Я ищу для создания диагностической утилиты с помощью команды Spring-Shell для службы технической поддержки. Идея состоит в том, чтобы удалить исполняемый файл jar в систему, запустить приложение и запустить его через кучу диагностики.Удалить команды из Spring-Shell

Я хочу отключить/удалить некоторые из команд, которые автоматически загружаются из пакета org.springframework.shell.commands, и я не могу понять, как это сделать. Является ли это возможным?

В противном случае я хотел бы просто настроить команду справки, чтобы я мог выводить свою собственную помощь. Я даже не могу заставить это работать, хотя мне удалось выяснить, как удалить их из списка команд, которые отображаются, когда пользователь нажимает TAB.

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

Любые идеи?

+0

где зацепить в методе isAvailable как вы описали? – 4F2E4A2E

ответ

4

Оказывается, в соответствии с http://docs.spring.io/spring-shell/docs/current/reference/htmlsingle/#d4e173 приложения с пружинной оболочкой можно вызвать с помощью аргумента командной строки, чтобы отключить внутренние команды. поэтому то, что я сделал, в основном методе моего приложения, я сам добавляю аргумент.

public static void main(String[] args) throws IOException 
{ 
    ArrayList<String> argsList = new ArrayList<String>(Arrays.asList(args)); 
    argsList.add("--disableInternalCommands"); 
    String[] argsArray = new String[argsList.size()]; 
    argsArray = argsList.toArray(argsArray); 
    Bootstrap.main(argsArray); 
} 

Возможно, есть более простой способ добавить аргумент к параметру args ... но это выходит за рамки этого вопроса.

+0

https://github.com/spring-projects/spring-shell/issues/76 – 4F2E4A2E

0

Если вы хотите исключить некоторые встроенные команды. Передайте параметр --disableInternalCommands в основную функцию (см. Предыдущую запись) и добавьте пакет org.springframework.shell.commands к пути проверки весеннего компонента и используйте фильтр 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> 
Смежные вопросы