Профиль сборки — это набор значений конфигурации, которые можно использовать для установки или переопределения значений по умолчанию сборки 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).
- Присутствующие / отсутствующие файлы.
Примеры активации профиля
Давайте предположим следующую структуру каталогов вашего проекта —
Теперь в каталоге 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 отобразит результат теста, являющийся активным профилем.