Maven динамически настраивает параметры компиляции на основе тега профиля в файле pom.

задняя часть Spring Операционная система maven

Обзор

  В реальной разработке проекта нам необходимо создавать разные пакеты в соответствии с разными сценариями использования. При использовании 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 — Введение в создание профилей

Сяомин производится, должен быть бутик.