Обзор
В реальной разработке проекта нам необходимо создавать разные пакеты в соответствии с разными сценариями использования. При использовании Maven для компиляции мы можем настроить параметры компиляции с помощью тега профиля Maven, чтобы достичь цели создания различных продуктов сборки. Например, в среде разработки у нас есть набор отладочных конфигураций, подходящих для этой машины, в производственной среде нам нужно закрыть большое количество логов отладки в среде отладки, или изменить путь хранения логов и т.д. Эти требования можно решить с помощью конфигурации тега профиля Maven.
profile позволяет нам определить ряд информации о конфигурации, а затем указать условия ее активации. Таким образом, мы можем определить несколько профилей, и тогда каждый профиль будет соответствовать различным условиям активации и информации о конфигурации, чтобы добиться эффекта использования различной информации о конфигурации в разных средах. Например, мы можем определить профиль для использования набора информации о конфигурации выше jdk1.5 и использовать другой набор информации о конфигурации ниже jdk1.5, или иногда мы можем использовать другую информацию о конфигурации в разных операционных системах, таких как окна. один набор информации, другой набор информации под linux и так далее.
Где определяется атрибут профиля
У нас есть несколько дополнительных мест для определения профилей. Место, где он определяется, другое, и объем его действия тоже другой.
- Конфигурацию профиля для конкретного проекта мы можем определить в pom.xml проекта.
- Для конфигурации профиля конкретного пользователя мы можем определить профиль в файле settings.xml пользователя. Этот файл находится в каталоге «.m2» в домашнем каталоге пользователя.
- Конфигурация глобального профиля. Глобальный профиль определяется в файле «conf/settings.xml» в каталоге установки Maven.
Информация, которую можно указать в профиле
Информация о конфигурации, которая может быть определена в профиле, связана с расположением профиля. Обсуждаются следующие два случая, один из которых определен в settings.xml, а другой — в pom.xml.
профиль определяется в settings.xml
Если профиль определен в settings.xml, это означает, что профиль является глобальным, он повлияет на все проекты или все проекты пользователя. Поскольку он является глобальным, в файле settings.xml может быть определена только относительно общая информация о конфигурации, например, об удаленных хранилищах. И некоторые более подробные сведения должны быть определены в соответствии с различными проектами, которые необходимо определить в pom.xml проекта. В частности, информация, которая может быть определена в settings.xml:
- <repositories>
- <pluginRepositories>
- <properties>
- Пары ключ-значение, определенные в
, можно использовать в pom.xml.
профиль определен в pom.xml
Профили, определенные в pom.xml, могут содержать дополнительную информацию. В основном это следующие:
- <repositories>
- <pluginRepositories>
- <dependencies>
- <plugins>
- <properties>
- <dependencyManagement>
- <distributionManagement>
Под элементом сборки также есть подэлементы, в основном в том числе:
- <defaultGoal>
- <resources>
- <testResources>
- <finalName>
Как активировать конфигурацию тега профиля
Maven предоставляет нам множество различных методов активации профиля. Например, мы можем использовать параметр -P для активации профиля при компиляции, либо он может активироваться автоматически в соответствии с настройками условий среды.
Используйте activeByDefault, чтобы установить активацию по умолчанию (определено в файле pom)
<profiles>
<profile>
<id>dev</id>
<properties>
<properties.active>dev</properties.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>release</id>
<properties>
<properties.active>release</properties.active>
</properties>
</profile>
</profiles>
Мы можем настроить статус активации через тег activeByDefault в теге активации под профилем.Когда в команде компиляции не настроено условие активации, когда тег activeByDefault настроен как true, под каким профилем это означаетПрофиль активируется по умолчанию во время компиляции.
Используйте activeProfiles в settings.xml, чтобы указать активные профили.
Мы можем использовать activeProfiles в settings.xml, чтобы указать профили, которые необходимо активировать.Профили, активированные таким образом, будут активированы во всех случаях. Например, теперь мы определяем следующие два профиля:
<profiles>
<profile>
<id>dev</id>
<properties>
<properties.active>dev</properties.active>
</properties>
</profile>
<profile>
<id>release</id>
<properties>
<properties.active>release</properties.active>
</properties>
</profile>
</profiles>
Профиль здесь может быть определен в settings.xml или pom.xml. Когда нам нужно указать dev как активное состояние, мы можем определить activeProfiles в settings.xml следующим образом:
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
Рассмотрим ситуацию, когда мы определяем несколько профилей, которые необходимо активировать одновременно, в разделе activeProfiles. Здесь также возьмите приведенное выше определение профиля в качестве примера, мы определяем активацию разработки и выпуска одновременно.
<activeProfiles>
<activeProfile>dev</activeProfile>
<activeProfile>release</activeProfile>
</activeProfiles>
Затем в это время, когда я использую свойство properties.active в pom.xml, оно переопределяет значение в соответствии с последовательностью, определенной профилем, то есть более позднее определение переопределяет более раннее определение.
Явная активация профиля с использованием параметра -P
Мы можем использовать параметр -P, чтобы указать, какой профиль активируется в данный момент при выполнении операций Maven. Например, нам нужно использовать профиль с id dev при упаковке проекта, мы можем сделать это:
mvn package -P dev
Если мы используем activeByDefault или определяем активный профиль в settings.xml, но не хотим, чтобы он был активен, когда мы что-то делаем, мы можем сделать это:
mvn package –P !dev
Здесь предполагается, что dev является активным профилем, помеченным как activeProfile в settings.xml, тогда, когда мы используем «-P !dev», это означает, что профиль не будет активен в текущей операции.
Активировать профили в соответствии со средой сборки
Очень важной особенностью profile является то, что его можно активировать в соответствии с различными средами компиляции, например активировать разные профили в соответствии с разными операционными системами или активировать разные профили в соответствии с разными версиями jdk и так далее.
<profiles>
<profile>
<id>profileTest1</id>
<jdk>1.5</jdk>
</profile>
<profiles>
Пример — практические шаги настройки на основе log4j2 под Springboot
Давайте возьмем конфигурацию log4j2 в качестве примера, чтобы поговорить о различных настройках среды разработки и рабочей среды.
1. Создайте новый каталог конфигурации в папке src/main/resources/ и создайте в нем папки dev и release.
Во-вторых, напишите два файла конфигурации log4j2 в разных средах.
Основное различие между двумя файлами конфигурации заключается в том, что пути хранения журналов различны. (Это просто для демонстрации разницы, путь настраивается произвольно, нужный путь вы можете настроить сами) log4j2-spring.xml для отладки:
log4j2-spring.xml в формальной среде: И поместите два файла прямо сейчас в соответствующий каталог.В-третьих, настройте файл POM
В файле проекта pom.xml в его корневом узле добавьте тег profiles:
в:
- Тег
указывает, что в настоящее время это описание профиля. - Тег
указывает идентификатор текущего профиля, который используется для различения разных профилей. - В теге
вы можете настроить значения K и V. Имя тега здесь произвольное. Вы можете использовать ${profiles.active} в свойствах проекта или файлах конфигурации xml, чтобы убрать значение "dev" или "выпуск"
В файле проекта pom.xml в его узле сборки добавьте тег ресурса:
в:
- указывает каталог ресурсов, необходимый для компиляции.
- Тег
означает исключение файла или папки в каталоге ресурсов. указывает сохраненный путь к ресурсу, упакованному и скомпилированному под тегом ресурса, «.» указывает текущий путь Видно, что мы настраиваем путь src/main/resources/config/${profiles.active} со значением ключа, которое мы определили в профиле, чтобы при активации конфигурации через параметр -P мы могли ввести соответствующий конфигурационный файл.
В-четвертых, компилировать
Скомпилируйте, выполнив следующую команду:
mvn package -P dev
Условие компиляции dev активировано. После компиляции и создания файла war или jar вы можете разархивировать пакет сборки и убедиться, что файл конфигурации упакован в корневой каталог пакета сборки.
Суммировать
Конфигурация профиля очень гибкая.Настроив некоторые пары ключ-значение под тегом профиля и используя эти ключи-значения в других файлах конфигурации, можно указать активную конфигурацию во время компиляции. В этой статье показано, как настроить файл конфигурации из измерения файла. По сравнению с использованием одной пары ключ-значение конфигурации, это на самом деле пример небольшого навыка, и этот небольшой пример часто встречается в повседневной жизни. Я надеюсь, что каждый может использовать его в практических приложениях.Если есть какие-либо проблемы или ошибки, пожалуйста, прокомментируйте и поправьте меня, я был бы очень благодарен.
приложение
Прикрепите ссылку на описание Maven-профилей:Maven — Введение в создание профилей
Сяомин производится, должен быть бутик.