как я могу добавить аргументы в командной строке 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 можно подключить параметры виртуальной машины?
Вы можете прикрепить параметры виртуальной машины к плагину весенней загрузки, как показано ниже:
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?
Нет. Чтобы установить свойства области тестирования, вы можете создать файл свойств области тестирования с именем application-test.properties. взгляните на baeldung.com/spring-tests-override-properties
Как насчет этого -DargLine = "-Djasypt.encryptor.password=$1"?
для mvn test
? Я не думаю, что это сработает.
mvn verify -P test-docker -DargLine = "-Djasypt.encryptor.password=$1" Это решение сработало.
Пожалуйста, проверьте конфигурацию плагина spring-boot, если он работает в разветвленном режиме, аргументы JVM maven не будут добавлены к разветвленной JVM.