Как остановить экранирование аргументов командной строки в плагине maven?

У меня есть плагин, который использует командную строку Plexus для вызова некоторого внешнего процесса и захвата вывода. Один из аргументов представлен в забавном формате с пробелами и кавычками, например --range:"25 августа 2008"-"04 августа 2009". У меня нет возможности изменить требуемый формат аргумента, но Plexus обнаруживает пробелы в аргументе и оборачивает все это в кавычки.

Так

call --range:"25 Aug 2008"-"04 Aug 2009"

становится

call "--range:"25 Aug 2008"-"04 Aug 2009""

и вызов не удается.

Могу ли я заставить сплетение перестать избегать споров?

1 ответ

Решение

Объект командной строки использует оболочку для взаимодействия с локальной средой. Вы можете настроить оболочку так, чтобы она переопределяла процесс экранирования по умолчанию, чтобы не экранировать кавычки:

Commandline cl = new Commandline("call");
commandline.getShell().setQuotedArgumentsEnabled(false);

Имейте в виду, что это означает, что ни один из аргументов не будет заключен в кавычки, поэтому используйте его с осторожностью!

Другие вопросы по тегам