Maven - это система build . Он отвечает за создание вашего артефакта. Профили Maven - это, по сути, инструмент, который позволяет немного изменить процесс сборки в зависимости от различных факторов (операционные системы, версия java и т. Д.). Они определены в файлах maven (pom.xml
)
Spring (и, конечно, Spring boot), в отличие от maven, это среда выполнения framework. Профили Spring - это нечто совершенно иное - они позволяют загружать разные bean-компоненты, разрешать разные конфигурации во время выполнения (читайте после вызова java -jar app.jar
) в зависимости от определений профиля.
Так что не путайте с тем же именем, это всего лишь «случайное совпадение»
Теперь что касается вашего вопроса.
Maven собирает артефакт и упаковывает его для этого, используя плагин для весенней загрузки maven. Если вы хотите настроить этот процесс сборки - используйте профили maven (и, как следствие, help:effective-profiles
иногда может быть удобно).
Когда артефакт собран - вы можете его запустить. Для этого вы можете использовать профили Spring для определения времени выполнения в вариантах: - Адреса баз данных - Учетные данные - Некоторые подсистемы вашего продукта, которые не будут запускаться локально, и т. Д., Этот список действительно зависит от приложения
Существует возможность запустить приложение весенней загрузки прямо из maven, и для этого вы действительно можете использовать -Dspring.profiles.active=dev
, но если вы его не запускаете (и вы не используете ни один из предложенных подходов прочтите о mvn spring-boot:run
, чтобы понять, что на самом деле означает запуск приложения Spring Boot во время сборки), затем:
Первый подход:
mvn clean package -Dspring-boot.run.profiles=dev help:active-profiles
-s settings.xml
-Dspring- boot.run.profiles здесь не имеет значения - вы ничего не делаете с ним (опять же, вы не запускаете проект во время сборки), поэтому он ничего не делает
java -jar package.jar
Здесь вы действительно можете указать профили пружин с --spring.profiles.active=dev,whatever
Второй подход:
mvn clean package -Dspring.profiles.active=dev help:active-profiles -s
settings.xml
Опять же, -Dspring.profiles.active=dev
не имеет значения, он ничего не делает.
java -jar -Dspring.profiles.active=dev package.jar
Здесь вы делаете указать список активных проф iles (точно так же, как --spring.profiles.active
, с точки зрения весенней загрузки это то же самое) Вот почему приложение работает во время выполнения, как ожидалось