Учебники

Maven — Создание профилей

Профиль сборки — это набор значений конфигурации, которые можно использовать для установки или переопределения значений по умолчанию сборки Maven. Используя профиль сборки, вы можете настроить сборку для различных сред, таких как производственная среда v / s.

Профили указываются в файле pom.xml с использованием его элементов activeProfiles / profile и запускаются различными способами. Профили изменяют POM во время сборки и используются для задания параметров различных целевых сред (например, путь к серверу базы данных в средах разработки, тестирования и производства).

Типы Строительного Профиля

Профили сборки в основном бывают трех типов.

Тип Где это определяется
На проект Определен в POM-файле проекта, pom.xml
На пользователя Определено в XML-файле настроек Maven (% USER_HOME% /. M2 / settings.xml)
Глобальный Определен в XML-файле глобальных настроек Maven (% M2_HOME% / conf / settings.xml)

Активация профиля

Профиль сборки Maven можно активировать различными способами.

  • Явно используя командную консоль.
  • Через настройки maven.
  • На основе переменных среды (пользовательские / системные переменные).
  • Настройки ОС (например, семейство Windows).
  • Присутствующие / отсутствующие файлы.

Примеры активации профиля

Давайте предположим следующую структуру каталогов вашего проекта —

Maven Build Профиль

Теперь в каталоге src / main / resources есть три специфичных для среды файла:

Sr.No. Имя файла и описание
1

env.properties

используется конфигурация по умолчанию, если профиль не указан.

2

env.test.properties

тестовая конфигурация при использовании тестового профиля.

3

env.prod.properties

производственная конфигурация при использовании профиля prod.

env.properties

используется конфигурация по умолчанию, если профиль не указан.

env.test.properties

тестовая конфигурация при использовании тестового профиля.

env.prod.properties

производственная конфигурация при использовании профиля prod.

Явная активация профиля

В следующем примере мы добавим maven-antrun-plugin: запустите цель, чтобы проверить фазу. Это позволит нам отображать текстовые сообщения для разных профилей. Мы будем использовать pom.xml для определения различных профилей и активировать профиль в командной консоли с помощью команды maven.

Предположим, мы создали следующий файл pom.xml в папке C: \ MVN \ project.

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <profiles>
      <profile>
         <id>test</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <version>1.1</version>
                  <executions>
                     <execution>
                        <phase>test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <tasks>
                              <echo>Using env.test.properties</echo>
                              <copy file="src/main/resources/env.test.properties"
                                 tofile="${project.build.outputDirectory}
                                 /env.properties"/>
                           </tasks>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn . Передайте имя профиля в качестве аргумента, используя опцию -P.

C:\MVN\project>mvn test -Ptest

Maven начнет обработку и отображение результатов тестового профиля сборки.

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] Copying 3 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\project\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\project\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------

There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[echo] Using env.test.properties
[INFO] Executed tasks

[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

[INFO] Total time: 1 second
[INFO] Finished at: Sun Jul 08 14:55:41 IST 2012
[INFO] Final Memory: 8M/64M
[INFO] ------------------------------------------------------------------

Теперь в качестве упражнения вы можете выполнить следующие шаги:

  • Добавьте еще один элемент профиля к элементу профиля в pom.xml (скопируйте существующий элемент профиля и вставьте его там, где заканчиваются элементы профиля).

  • Обновить идентификатор этого элемента профиля с тестового до нормального.

  • Обновите раздел задачи, чтобы отобразить env.properties и скопируйте env.properties в целевой каталог.

  • Повторите описанные выше три шага, обновите id до prod и раздел задачи для env.prod.properties.

  • Это все. Теперь у вас есть три готовых профиля сборки (обычный / test / prod).

Добавьте еще один элемент профиля к элементу профиля в pom.xml (скопируйте существующий элемент профиля и вставьте его там, где заканчиваются элементы профиля).

Обновить идентификатор этого элемента профиля с тестового до нормального.

Обновите раздел задачи, чтобы отобразить env.properties и скопируйте env.properties в целевой каталог.

Повторите описанные выше три шага, обновите id до prod и раздел задачи для env.prod.properties.

Это все. Теперь у вас есть три готовых профиля сборки (обычный / test / prod).

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующие команды mvn . Передайте имена профилей в качестве аргумента, используя опцию -P.

C:\MVN\project>mvn test -Pnormal

C:\MVN\project>mvn test -Pprod

Проверьте выходные данные сборки, чтобы увидеть разницу.

Активация профиля через настройки Maven

Откройте файл Maven settings.xml, доступный в каталоге% USER_HOME% /. M2, где % USER_HOME% представляет домашний каталог пользователя. Если файл settings.xml отсутствует, создайте новый.

Добавьте тестовый профиль в качестве активного, используя узел активных профилей, как показано ниже в примере.

<settings xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <mirrors>
      <mirror>
         <id>maven.dev.snaponglobal.com</id>
         <name>Internal Artifactory Maven repository</name>
         <url>http://repo1.maven.org/maven2/</url>
         <mirrorOf>*</mirrorOf>
      </mirror>
   </mirrors>
   <activeProfiles>
      <activeProfile>test</activeProfile>
   </activeProfiles>
</settings>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn . Не передавайте имя профиля, используя опцию -P. Maven отобразит результат теста, являющийся активным профилем.

C:\MVN\project>mvn test

Активация профиля через переменные среды

Теперь удалите активный профиль из maven settings.xml и обновите тестовый профиль, упомянутый в pom.xml. Добавьте элемент активации в элемент профиля, как показано ниже.

Профиль теста сработает, когда системное свойство «env» будет указано со значением «test». Создайте переменную окружения «env» и установите ее значение как «test».

<profile>
   <id>test</id>
   <activation>
      <property>
         <name>env</name>
         <value>test</value>
      </property>
   </activation>
</profile>

Давайте откроем командную консоль, перейдем в папку, содержащую pom.xml, и выполним следующую команду mvn .

C:\MVN\project>mvn test

Активация профиля через операционную систему

Элемент активации, чтобы включить ос детали, как показано ниже. Этот тестовый профиль будет запущен, когда система Windows XP.

 <Профиль>
    <Идентификатор> тест </ ID>
    <Активация>
       <Ос>
          <имя> Windows XP </ name>
          <Семья> Окна </ семья>
          <Арка> x86 </ арка>
          <Версия> 5.1.2600 </ версия>
       </ OS>
    </ Активации>
 </ Профиль>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующие команды mvn . Не передавайте имя профиля, используя опцию -P. Maven отобразит результат теста, являющийся активным профилем.

C:\MVN\project>mvn test

Активация профиля с помощью текущего / отсутствующего файла

Теперь активируйте элемент, чтобы включить детали ОС, как показано ниже. Тестовый профиль сработает, если отсутствует целевой / создан-источники / axistools / wsdl2java / com / companyname / group .

<profile>
   <id>test</id>
   <activation>
      <file>
         <missing>target/generated-sources/axistools/wsdl2java/
           com/companyname/group</missing>
      </file>
   </activation>
</profile>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующие команды mvn . Не передавайте имя профиля, используя опцию -P. Maven отобразит результат теста, являющийся активным профилем.