Запуск jar с переменной окружения spring profile

#java #spring #gradle

#java #spring #gradle

Вопрос:

Я пытаюсь использовать аргумент spring profile для запуска файла jar, профиль не работает:

 java -jar -Dspring.profiles.active="test" build/libs/moley2-0.0.1-SNAPSHOT.jar
 

Вот мое приложение.yml-файл:

 spring:
  profiles: dev
server:
  port:8000
---
spring:
  profiles: test
server:
  port:9000
 

Jar был создан с использованием gradle build в корневом каталоге проектов. Запуск jar с предоставленной командой начинается с порта 8080, поэтому кажется, что профиль не загружается. Я уверен, что здесь мне не хватает чего-то простого, поскольку я новичок в gradle / spring. Заранее спасибо за любые предложения.

Комментарии:

1. Вы уверены, что gradle build создаете файл jar?

2. да, я имею в виду, что команда выполняется нормально, я не думаю, что это было бы без действительного файла jar. Просто не загружает профиль, пока порт не останется на 8080

3. Удалите те " , которые не должны быть включены, и лучше использовать обычный аргумент java -jar build/libs/moley2-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

Ответ №1:

Сервер свойств должен быть:

 server:
  port: 9000
 

Вместо:

 server:
  port:9000
 

Между двоеточием и значением отсутствует пробел.


Также обратите внимание, что настройка профиля как:

 spring:
  profiles: dev
 

устарел с версии 2.4.0 и должен быть заменен на:

 spring:
  config:
    activate:
      on-profile: dev
 

Дополнительная информация в документе. Или учебник здесь.

Комментарии:

1. Спасибо, я изменил пространство, выполнил очистку gradle и сборку gradle, и теперь по умолчанию используется порт тестового профиля, даже когда он правильно загружает профиль разработчика. Я получаю: следующие профили активны: dev, но теперь tomcat запускается на 9000, хотя для разработчика указано 8000

2. Это сработало после переключения на не устаревший yaml. Спасибо @Marc