Чтение свойства из POM Maven в сценарии bash (Linux) - PullRequest
0 голосов
/ 20 декабря 2018

Я использую maven в качестве инструмента для сборки.Ниже приведен фрагмент моего POM.

    <properties>
        <geb.version>2.2</geb.version>
        <selenium.version>3.14.0</selenium.version>
        <groovy.version>2.4.14</groovy.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spock.version>1.1-groovy-2.4</spock.version>
        <surefire.plugin.version>2.20</surefire.plugin.version>
        <surefire.plugin.parallel>methods</surefire.plugin.parallel>
        <selenium.host>XXXXX</selenium.host>
    </properties>

Я пишу исполняемый файл linux и хочу получить доступ к свойству <selenium.host> в моем скрипте bash.Как мне это сделать?

DEFAULT_ADDRESS=$(get address from POM here)

Обратите внимание, что мой скрипт и POM-файл находятся в одном каталоге.

Cheers!

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Вы можете использовать xmllint для анализа xml из командной строки:

address=$(xmllint --xpath "string(//properties/selenium.host)" file.xml)
echo "$address"

Или, если xmllint недоступен, а тег <selenium.host> появляется только один раз:

grep -oP '(?<=<selenium.host>).*(?=</selenium.host>)' file.xml
0 голосов
/ 20 декабря 2018

Лучшее и надежное решение - использовать maven-help-plugin , например:

ADDRESS=$(mvn help:evaluate -Dexpression=selenium.host -q -DforceStdout)

Если вы не указали версию maven-help-pluginв вашем файле pom вы должны использовать следующее:

ADDRESS=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.1:evaluate -Dexpression=selenium.host -q -DforceStdout)

В результате данное свойство читается из файла pom, а затем значение присваивается ADDRESS

0 голосов
/ 20 декабря 2018

Вы можете сделать это так:

DEFAULT_ADDRESS=`cat pom.xml | grep "selenium.host" | cut -d'>' -f2 | cut -d'<' -f1`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...