Не следует путать профили Maven и профили Spring - это совершенно разные вещи.
mvnw spring-boot:run -Dspring.profiles.active=dev
- это говорит Spring, какой профиль использовать во время выполнения.
Spring Profile - это то, как приложение Spring будет настроено во время выполнения на основе активного профиля. Вы можете прочитать больше об этом здесь и здесь .
mvnw -P dev
- это говорит Maven использовать профиль сборки Maven
Maven Profile - это то, как ваше Java-приложение будет компилироваться / собираться / упаковываться. Он связан с компиляцией / упаковкой, а не с выполнением вашего приложения Spring во время выполнения, и совсем не связан с Spring. Вы можете узнать больше об этом здесь и здесь .
Это ответ на ваш первый вопрос.
Что касается вашего второго вопроса, профиль Mavenиспользуется, когда вам нужно построить приложение по-разному в зависимости от настроек профиля. Например, упакуйте «толстую флягу» со всеми зависимостями при выполнении mvn -P fat-jar
.
. Профиль Spring используется, когда вы хотите настроить приложение Spring для другой работы во время выполнения, например - для использования development
и production
база данных и т. д.