Скрипт Bash, запускаемый через Maven, не запрашивает ввод правильно - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть скрипт bash, в котором я клонирую всего 5 репозиториев с частного сервера.Я не хочу, чтобы пользователь вводил свои учетные данные снова и снова, поэтому я запрашиваю их один раз, а затем повторно их использую.

Это мой код для ввода учетных данных

read -p "Enter Username: " username 
echo -n "Enter Password: "
read -s password

Однако, когдаэтот фрагмент кода запускается через maven, он не отображает сообщения с подсказками, такие как Enter Username, и даже не принимает флаг -s silent input.При запуске без maven этот скрипт работает нормально.

Уловка в том, что если я использую команду read без каких-либо флагов или строковых подсказок, она работает нормально, что заставляет меня думать, что maven может не распознаватьили принимая эти флаги.

Кто-нибудь еще сталкивался с этим?Я также пытался использовать режим interactive в Maven, те же результаты.

1 Ответ

0 голосов
/ 23 ноября 2018

Только не используйте интерактивность внутри инструментов сборки.Все значения должны быть введены в сборку.Это не работа инструмента сборки, чтобы предложить пользователю их.В Maven вы можете использовать свойства Java System или переменные среды:

pom.xml

<user>${sysprop.user}</user>
<password>${env.PASSWORD}</user>

bash

export PASSWORD=s3cr3t mvn task -Dsysprop.user=root

Отвечая на ваш вопрос напрямую: убедитесь, что место, где вы запускаете bash-скрипт (внешний процесс), связывает входной и выходной поток этого внешнего процесса и процесса JVM Maven.Подробнее здесь и здесь

...