Цитирование и экранирование в плагине Maven Exec - PullRequest
3 голосов
/ 09 марта 2012

Как работает цитирование и экранирование для параметров, передаваемых плагинам Maven?

Например, я хочу передать несколько имен файлов в качестве аргументов приложению, запущенному плагином Maven Exec:

mvnDebug exec:java -Dexec.mainClass="Main" -Dexec.args="/path/to/file1 /path/to/file2"

Но что, если пути имеют пробелы?

Я пытался использовать \ ":
-Dexec.args="\"/path/to/a file\" /path/to/file2"

и "":
-Dexec.args="""/path/to/a file"" /path/to/file2"

ни то, ни другое не работает :-(. Также не передвигается первая кавычка до -D.

Исходный код для плагина Maven Exec мне тоже не помогает, он получает String [] откуда-то, но где?

Обратите внимание, что я должен заставить это работать из командной строки, без изменений в файле POM.

1 Ответ

1 голос
/ 09 марта 2012

Вы можете попробовать одинарные кавычки ('), но я сомневаюсь, что это тоже сработает.

Проблема в том, что внутри POM может быть несколько argument элементов (отсюда и массив в плагинеисточник), но у вас есть только одно свойство из командной строки.

Параметры:

  • Исправить плагин и / или открыть запрос функции для поддержки нескольких аргументов (возможно,exec.args.0, exec.args.1, exec.args.2, ...)

  • Создайте модуль, который зависит от этого проекта / модуля и где вы можете изменить POM

  • Использовать Ant или BASHскрипт.Я часто использую этот подход для сбора полезных команд, которые не легко поддерживаются Maven.mvn dependency:build-classpath -Dmdep.outputFile=... даст вам classpath в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...