Maven Build Profiles--reference

What is Build Profile?


Build profile is a set of configuration values which can
be used to set or override default values of Maven build. Using a build profile,
you can customize build for different environments such
asProduction v/s Development environments.

Profiles are specified in pom.xml file using its activeProfiles / profiles
elements and are triggered in variety of ways. Profiles modify the POM at build
time, and are used to give parameters different target environments (for
example, the path of the database server in the development, testing, and
production environments).

Types of Build Profile

Build profiles are majorly of three types















Type Where it is defined
Per Project Defined in the project POM file, pom.xml
Per User Defined in Maven settings xml file (%USER_HOME%/.m2/settings.xml)
Global Defined in Maven global settings xml file
(%M2_HOME%/conf/settings.xml)

Profile Activation

A Maven Build Profile can be activated in various ways.

  • Explicitly using command console input.

  • Through maven settings.

  • Based on environment variables (User/System variables).

  • OS Settings (for example, Windows family).

  • Present/missing files.

Profile Activation Examples

Let us assume following directory structure of your project:

Now, under src/main/resources there are three environment
specific files:















File Name Description
env.properties default configuration used if no profile is mentioned.
env.test.properties test configuration when test profile is used.
env.prod.properties production configuration when prod profile is used.

Explicit Profile Activation

In the following example, We‘ll attach maven-antrun-plugin:run goal to test
phase. This will allow us to echo text messages for different profiles. We will
be using pom.xml to define different profiles and will activate profile at
command console using maven command.

Assume, we‘ve created following pom.xml in C:\MVN\project folder.

<projectxmlns="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><copyfile="src/main/resources/env.test.properties"tofile="${project.build.outputDirectory}/env.properties"/></tasks></configuration></execution></executions></plugin></plugins></build></profile></profiles></project>

Now open command console, go to the folder containing pom.xml and execute the
following mvncommand. Pass the profile name as argument
using -P option.

C:\MVN\project>mvn test -Ptest

Maven will start processing and display the result of test build profile.

[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] ------------------------------------------------------------------


Now as an exercise, you can do the following steps

  • Add another profile element to profiles element of pom.xml (copy existing
    profile element and paste it where profile elements ends).

  • Update id of this profile element from test to normal.

  • Update task section to echo env.properties and copy env.properties to
    target directory

  • Again repeat above three steps, update id to prod and task section for
    env.prod.properties

  • That‘s all. Now you‘ve three build profiles ready (normal / test /
    prod).

Now open command console, go to the folder containing pom.xml and execute the
following mvncommands. Pass the profile names as argument
using -P option.

C:\MVN\project>mvn test -Pnormal
C:\MVN\project>mvn test -Pprod

Check the output of build to see the difference.

Profile Activation via Maven Settings

Open Maven settings.xml file available in
%USER_HOME%/.m2 directory where %USER_HOME%represents user
home directory. If settings.xml file is not there then create a new one.

Add test profile as an active profile using activeProfiles node as shown
below in example

<settingsxmlns="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>

Now open command console, go to the folder containing pom.xml and execute the
following mvncommand. Do not pass the profile name using
-P option.Maven will display result of test profile being an active profile.

C:\MVN\project>mvn test

Profile Activation via Environment Variables

Now remove active profile from maven settings.xml and update the test profile
mentioned in pom.xml. Add activation element to profile element as shown
below.

The test profile will trigger when the system property "env" is specified
with the value "test". Create a environment variable "env" and set its value as
"test".

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

Let‘s open command console, go to the folder containing pom.xml and execute
the following mvncommand.

C:\MVN\project>mvn test

Profile Activation via Operating System

Activation element to include os detail as shown below. This test profile
will trigger when the system is windows XP.

<profile><id>test</id><activation><os><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os></activation></profile>

Now open command console, go to the folder containing pom.xml and execute the
following mvncommands. Do not pass the profile name using
-P option.Maven will display result of test profile being an active profile.

C:\MVN\project>mvn test

Profile Activation via Present/Missing File

Now activation element to include os detail as shown below. The test profile
will trigger
whentarget/generated-sources/axistools/wsdl2java/com/companyname/group is
missing.

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

Now open command console, go to the folder containing pom.xml and execute the
following mvncommands. Do not pass the profile name using
-P option.Maven will display result of test profile being an active profile.

C:\MVN\project>mvn test

reference from :http://www.tutorialspoint.com/maven/maven_build_profiles.htm

Maven Build Profiles--reference,布布扣,bubuko.com

时间: 2024-12-26 20:40:13

Maven Build Profiles--reference的相关文章

在eclipse如何删除无效的maven build

在Eclipse的maven项目中,点击一次“maven build...”明明没有配置,它也就会产生一个maven build,那么如何删除这些无效的配置呢?

eclipse中使用maven插件的时候,运行run as maven build的时候报错

eclipse中使用maven插件的时候,运行run as maven build的时候报错. 问题是因为,eclipse和Maven不兼容导致的.用eclipse自带的即可.自带的版本低.要是使用高版本的,请按照如下的步骤配置一下即可. -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 可以设一个环境变量

maven:log4j:WARN No appenders could be found for logger (loggerInfo).或者maven build error:org.apache.maven.lifecycle.LifecycleExecutionExceptio

maven在build构建时,加载资源文件时需要配置资源文件插件: 1,在pom.xml文件中加入 <build> <finalName>${project.build.target.file.name}</finalName> <directory>${basedir}/target</directory>  <sourceDirectory>${basedir}/src/main/java</sourceDirectory&

maven build 产生 Missing artifact org.jboss.logging:jar:3.1.0.GA解决方法

报错来源分析 由于hibernate-entitymanager 需要jboss logging .由于或多或少的原因导致 maven无法下载相关的jar文件. 解决办法: 访问 http://search.maven.org 搜索jboss-logging 点击all, 找到相关的的版本,再点击jar下载文件 下载好的文件放到maven仓库中对应版本的位置,一般是C:\Users\ username \ .m2\repository\org\jboss\logging\jboss-loggin

Maven Build Life Cycle--reference

What is Build Lifecycle? A Build Lifecycle is a well defined sequence of phases which define the order in which the goals are to be executed. Here phase represents a stage in life cycle. As an example, a typical Maven Build Lifecycle is consists of f

maven 运行run as maven build的时候报错

eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 直接的解决方法:使用低版本的maven 可以设一个环境变量M2_HOME指向你的maven安装目录 M2_HOME=D:\Apps\apache-maven-3.3

eclipse中的maven build、maven clean、maven install和maven test的区别

eclipse中的maven build.maven clean.maven install和maven test的区别 https://www.cnblogs.com/Marydon20170307/p/9928241.html 原文地址:https://www.cnblogs.com/yuyu666/p/10049853.html

Maven build 命令介绍(转)

常用命令: 打包:mvn package编译:mvn compile清空:mvn clean(清除编译后目录,默认是target目录)运行测试:mvn test安装jar包到本地仓库中:mvn install跳过测试:mvn xxx -DskipTests 1.创建 Maven 工程 ①.在 src/main/java 新建包 com.ys.maven,然后在这个包中创建类 HelloMaven.java 1 2 3 4 5 6 7 8 9 10 package com.ys.maven; pu

【Maven】Eclipse中Maven项目Maven build、build...、clean、install、test的含义

一.如下图大家知道各项的含义吗? 二.下面一一介绍 Maven clean  将以前编译得到的旧的 class 字节码文件删除,即删除target文件夹下的内容 [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ ysx --- [INFO] Deleting /Users/haidiyixiaoyu/eclipse-workspace/ysx/target [INFO] ------------------------------