Как подключить параметры виртуальной машины для командной строки maven

как я могу добавить аргументы в командной строке maven, определенной как опция VM. В Intellij у меня есть конфигурация

java 11 -Djasypt.encryptor.password=xxx

Это решение отлично работает, когда я читаю параметр VM, используя аннотацию @Value в классе конфигурации.

@Value("${jasypt.encryptor.password}")
private String jasyptEncryptorPassword;

Я использую следующую команду mvn -Djasypt.encryptor.password=xx spring-boot:run Но это не удалось получить со следующей ошибкой.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jasyptConfiguration': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jasypt.encryptor.password' in value "${jasypt.encryptor.password}"

Только для команды java -jar можно подключить параметры виртуальной машины?

Пожалуйста, проверьте конфигурацию плагина spring-boot, если он работает в разветвленном режиме, аргументы JVM maven не будут добавлены к разветвленной JVM.

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

Ответы 1

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

Вы можете прикрепить параметры виртуальной машины к плагину весенней загрузки, как показано ниже:

mvn spring-boot:run -Dspring-boot.run.jvmArguments = "-Djasypt.encryptor.password=xxx"

проверьте документы для плагина здесь: spring-boot-maven-plugin docs

Другой вариант - установить его в pom.xml

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>
            -Djasypt.encryptor.password=xxx
        </jvmArguments>
    </configuration>
</plugin>

Это решение также можно применить для теста mvn?

maciejka 13.12.2020 16:53

Нет. Чтобы установить свойства области тестирования, вы можете создать файл свойств области тестирования с именем application-test.properties. взгляните на baeldung.com/spring-tests-override-properties

Govinda Sakhare 13.12.2020 17:24

Как насчет этого -DargLine = "-Djasypt.encryptor.password=$1"?

maciejka 13.12.2020 17:37

для mvn test? Я не думаю, что это сработает.

Govinda Sakhare 13.12.2020 17:47

mvn verify -P test-docker -DargLine = "-Djasypt.encryptor.password=$1" Это решение сработало.

maciejka 13.12.2020 17:48

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