Как я могу передать переменную VSTS в файл свойств в проекте MVN

Мне нужно передать базу данных, имя пользователя и пароль для подключения к базе данных из VSTS. Я выполняю проект maven.

Я определил переменные в VSTS. Я хочу иметь файл свойств, например

datasource.url = "${database}"
datasource.username = "${username}"
datasource.password = "${password}"

Возможно ли это сделать? или я должен получить переменные из кода Java?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
874
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Создайте для него задачу. Например, в конвейере сборки:

- task: Bash@3
  inputs:
    targetType: inline
    script: 'sed -i "s/\${database}/\$(database)/g" db.properties'
    displayName: 'inject properties'

И так далее.

Ответ принят как подходящий

Is possible to do this? or should I get the variables from the java code?

Конечно, может. И вам не нужно выполнять другую сложную операцию, просто используйте задачу с именем Задача «Заменить токены».

Это работает не только в файле .config, но и очень эффективно в файле .properties.

В качестве примера просто измените определение переменной, чтобы к ней можно было правильно обращаться:

datasource.url = "#{database}#"
datasource.username = "#{username}#"
datasource.password = "#{password}#"

Формат переменной в файле .properties#{VariableName}#.

Затем добавьте задачу «Замена токенов» в конвейер. Добавьте значение на вкладке Переменная:

Для настройки задачи достаточно указать значение Целевые файлы:

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

Примечание. Во время сборки с помощью этой задачи будет выдано сообщение об ошибке, например: ##[error]EISDIR: illegal operation on a directory, read. Но на самом деле это не влияет на операцию замены этих переменных. Вы увидите, что файл был успешно заменен.

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

Похожие вопросы

Почему html-код в chrome devtools и html-код, проанализированный jsoup, отличаются?
Упорядочивание при одновременном чтении и записи в коллекции в потоках в Java
Как получить доступ к экземпляру класса, который находится внутри массиваList
Пример стартового кода Flutter с Main.Dart и .java
Как добавить проверку разрешений для многих методов в контроллере? (Фильтр, Действие)
Проблема с шириной раскрывающегося списка ComboBox после изменения размера окна в JavaFX
Почему шифрование RSA в Java создает зашифрованный текст другой длины, чем C#
Почему Java и C++ имеют синтаксическое сходство?
Я пытаюсь запустить службу переднего плана в Android, но всякий раз, когда я запускаю свое приложение, приложение зависает и не показывает никаких уведомлений
Ошибка: не удается найти или загрузить основной класс при использовании команды Java после компиляции файла .Java с несколькими классами