Helpers - компьютеры, интернет, программирование

Как передать переменную оболочки или переменную среды в Maven при запуске теста mvn для MariaDB Connector J

При использовании Maven для запуска теста для MariaDB Connector J вы можете указать dbUrl с помощью параметра dbUrl следующим образом:

mvn -DdbUrl="jdbc:mysql://myhost:3306/testj?user=myuser&password=mypassword" package

Мой вопрос заключается в том, как динамически передавать значение dbUrl при запуске из оболочки, т.е. что-то вроде этого:

export myUrl="abcd"
mvn -DdbUrl=$myUrl package

Но это не работает. Могу я спросить, есть ли способ передать переменные оболочки при использовании команды mvn?

09.04.2019


Ответы:


1

Если вы определяете свойство в командной строке Maven с помощью -Dname=value, оно предназначено для использования внутри POM вашего проекта. (Кстати, вы также можете напрямую обращаться к переменным среды, используя ${env.<variable name>}).

Чтобы передать системные свойства в тестовый код, вы можете использовать Параметр цели <systemPropertyVariables> test подключаемого модуля Maven Surefire:

<systemPropertyVariables> Список свойств системы для передачи в тесты JUnit.

в соответствии с примерами в разделе Использование свойств системы :

  ...  
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
      <systemPropertyVariables>
        <dbUrl>${dbUrl}</dbUrl>  <!-- if defined on Maven cmd line -->
        <!-- <dbUrl>${env.myUrl}</dbUrl>  if defined as env variable -->
      </systemPropertyVariables>
    </configuration>
  </plugin>
  ...

Тогда используйте в своем коде System.getProperty("dbUrl").

09.04.2019
  • Привет Герольд! Большое спасибо за подробное объяснение использования системных свойств. Однако мой случай особенный, я не могу изменить файл pom или тестовый код. Я нашел способ обойти это, сначала составив всю командную строку mvn, а затем запустив ее с помощью sh. Могу я спросить, это единственный способ, если я не могу изменить файл pom или тестовый код? Большое спасибо. 10.04.2019

  • 2

    Большое спасибо Gerold Broser за подробное объяснение использования системных свойств. Однако мой случай особенный, я не могу изменить файл pom или тестовый код. Я нашел способ обойти это, сначала составив всю командную строку mvn чем-то вроде string concat, а затем запустив ее с помощью sh.

    11.04.2019
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..