Maven的构建配置文件(Build Profiles)
在命令行使用构建配置文件时,是-P,比如:mvn -Pinput
注意:这里的构建配置文件并不是一个真正的文件,而是通过指定参数来做特定的事。
以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_build_profiles.html:
当时此教程的例子是在2.0版本,而新的3.0版本只是增加了一点,具体可以参考官网http://maven.apache.org/guides/introduction/introduction-to-profiles.html
什么是构建配置文件?
构建配置文件(A Build profile) 是一系列的配置项的值,可以用来设置或者覆盖Maven构建默认值。使用构建配置文件,你可以为不同的环境,比如说生产环境(Producation)和开发(Development)环境,定制构建方式。
配置文件在pom.xml文件中使用activeProfiles或者profiles元素指定,并且可以通过各种方式触发。配置文件在构建时修改POM,并且用来给参数设定不同的目标环境(比如说,开发(Development)、测试(Testing)和生产环境(Producation)中数据库服务器的地址)。
构建配置文件的类型
构建配置文件大体上有三种类型
类型 | 在哪定义 |
---|---|
项目级(Per Project) | 定义在项目的POM文件pom.xml中 |
用户级 (Per User) | 定义在Maven的设置xml文件中 (%USER_HOME%/.m2/settings.xml) |
全局(Global) | 定义在Maven全局的设置xml文件中 (%M2_HOME%/conf/settings.xml) |
配置文件激活
Maven的构建配置文件可以通过多种方式激活。
- 使用命令控制台输入显式激活。
- 通过maven设置。
- 基于环境变量(用户或者系统变量)。
- 操作系统设置(比如说,Windows系列)。
- 文件的存在或者缺失。
官方配置文件激活示例
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
http://maven.apache.org/ref/2.2.1/maven-profile/profiles.html
实践配置文件激活示例
新建的项目结构如下:
其中在src/main/resources文件夹下有三个用于测试文件:
文件名 | 描述 |
---|---|
env.properties | 如果未指定配置文件时默认使用的配置。 |
env.test.properties | 当测试配置文件使用时的测试配置。 |
env.prod.properties | 当生产配置文件使用时的生产配置。 |
注意:这三个配置文件并不是代表构建配置文件的功能,而是用于本次测试的目的;比如,我指定了构建配置文件为prod时,项目就使用envprod.properties文件。
注意:下面的例子仍然是使用AntRun插件,因为此插件能绑定Maven生命周期阶段,并通过Ant的标签不用编写一点代码即可输出信息、复制文件等,经此而已。其余的与本次构建配置文件无关。
1、显示配置文件激活
pom.xml配置如下:
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><packaging>jar</packaging><version>0.1-SNAPSHOT</version><name>testproject</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><profiles><profile><id>test</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</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" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile><profile><id>normal</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><phase>test</phase><goals><goal>run</goal></goals><configuration><tasks><echo>Using env.properties</echo><copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile><profile><id>prod</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><phase>test</phase><goals><goal>run</goal></goals><configuration><tasks><echo>Using env.prod.properties</echo><copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile></profiles> </project>
注意:构建配置文件采用的是<profiles>节点。
说明:上面新建了三个<profiles>,其中<id>区分了不同的<profiles>执行不同的AntRun任务;而AntRun的任务可以这么理解,AntRun监听test的Maven生命周期阶段,当Maven执行test时,就除了发AntRun的任务,任务里面为输出文本并复制文件到指定的位置;而至于要执行哪个AntRun任务,此时构建配置文件起到了传输指定的作用,比如,通过命令行参数输入指定的<id>。
执行命令:
mvn test -Ptest
提示:第一个test为Maven生命周期阶段,第2个test为为构建配置文件指定的<id>参数,这个参数通过-P来传输,当然,它可以是prod或者normal这些由你定义的<id>。
运行的结果如下:
可以看出成功的触发了AntRun的任务。并且是对应构建配置文件下的<id>为test的任务。
再测试其余两个命令,结果如下:
2、通过Maven设置激活配置文件
打开%USER_HOME%/.m2目录下的settings.xml文件,其中%USER_HOME%代表用户主目录。如果setting.xml文件不存在就直接拷贝%M2_HOME%/conf/settings.xml到.m2目录,其中%M2_HOME%代表Maven的安装目录。对于为什么可以这样做,参考:http://www.cnblogs.com/EasonJim/p/6827058.html
配置setting.xml文件,增加<activeProfiles>属性:
<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.0http://maven.apache.org/xsd/settings-1.0.0.xsd">...<activeProfiles><activeProfile>test</activeProfile></activeProfiles> </settings>
执行命令:
mvn test
提示:此时不需要使用-Ptest来输入参数了,上面的setting.xml文件的<activeprofile>已经指定了test参数,代替了。
提示2:同样可以使用在%M2_HOME%/conf/settings.xml的文件进行配置,效果一致。
执行结果:
3、通过环境变量激活配置文件
先把上一步测试的setting.xml值全部去掉。
然后在pom.xml里面的<id>为test的<profile>节点,加入<activation>节点:
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><packaging>jar</packaging><version>0.1-SNAPSHOT</version><name>testproject</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><profiles><profile><id>test</id><activation><property><name>env</name><value>test</value></property></activation><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</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" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile><profile><id>normal</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><phase>test</phase><goals><goal>run</goal></goals><configuration><tasks><echo>Using env.properties</echo><copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile><profile><id>prod</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><phase>test</phase><goals><goal>run</goal></goals><configuration><tasks><echo>Using env.prod.properties</echo><copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/></tasks></configuration></execution></executions></plugin></plugins></build></profile></profiles> </project>
执行命令:
mvn test -Denv=test
提示:上面使用-D传递环境变量,其中evn对应刚才设置的<name>值,test对应<value>。
提示2:在Windows 10上测试了系统的环境变量,但是不生效,所以,只能通过-D传递。
执行结果:
4、通过操作系统激活配置文件
5、通过文件的存在或者缺失激活配置文件
6、通过JDK的版本激活配置文件
...
更多激活配置,可以参考官方的例子:http://maven.apache.org/guides/introduction/introduction-to-profiles.html
测试工程:https://github.com/easonjim/5_java_example/tree/master/maventest/test4/test4/testproject
==>如有问题,请联系我:easonjim#163.com,或者下方发表评论。<==
Maven的构建配置文件(Build Profiles)相关推荐
- maven 修改文件名_Maven 构建配置文件
Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值. 使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Deve ...
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...
- java jetty eclipse_用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)
(软件环境) 『系统』Windows 10 x64 『JAVA』JDK 1.8.0_91 『Eclipse』 Eclipse-oxygen 『Maven』 apache-maven-3.6.3 『Je ...
- Maven(自动化构建工具)
目录 Maven简介 1.1 软件开发中的阶段 1.2 Maven能做什么 1.3 什么是Maven 1.4 Maven的概念 1.5 Maven安装 Maven的核心概念 2.1约定的目录结构 2. ...
- Java初级项目学习第一讲:Maven项目构建
Maven项目构建 一.什么是Maven Maven这个单词来自于意第绪语(犹太语),意为知识的积累.Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金 ...
- maven的settings配置文件详解
目录 一,概述 1.settings.xml的作用 2.settings.xml的文件位置 3.配置的优先级 二.settings.xml元素详解 1.顶级元素概览 1.1.LocalReposito ...
- 【Spring boot 实战】使用Maven插件构建Docker镜像
本文主要介绍如何使用Maven插件将SpringBoot应用打包为Docker镜像,并上传到私有镜像仓库Docker Registry的过程. 使用Maven构建本地Docker镜像 我们以项目spr ...
- 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ④ ( 创建 tasks.json 编译器构建配置文件 | tasks.json 编译器构建配置文件分析 )
文章目录 一.创建 tasks.json 编译器构建配置文件 二.tasks.json 编译器构建配置文件分析 可以参考官方提供的文档 : https://code.visualstudio.com/ ...
- 【错误记录】jcenter 移除问题 ( Please remove usages of `jcenter()` Maven repository from your build scripts )
文章目录 一.报错信息 二.解决方案 一.报错信息 报错信息 : Please remove usages of `jcenter()` Maven repository from your buil ...
最新文章
- QIIME 2用户文档. 11元数据Metadata(2019.7)
- 图论中的知识点(等待补充和更新)
- 1.1 Spring的整体架构--Spring源码深度解析
- java的八种数据类型_JAVA 的8种基本数据类型
- 互联网人必看的中台理论,阿里腾讯架构师用大白话讲出来了
- 题解 LGOJ P4168 【[Violet]蒲公英】
- VS2012下基于Glut OpenGL GL_POLYGON_STIPPLE示例程序:
- oracle srvctl命令,关闭RAC、srvctl命令
- linux mate桌面主题下载_5个适用于Linux的最佳图标主题
- 用Android studio搭建沃商店SDK任意支付的配置
- 在Linux上安装chisel bootcamp遇到的各种问题
- CREO学习笔记【钣金结构中常用的标准件】
- QCC3040---如何设置PIO为中断
- 微信公众号的号内搜索关键词怎么设置 号内搜索关键词删除和排序方法
- model-based强化学习入门
- php判断无理数,重新整理证明:无理数在数轴上不存在的逻辑证明
- [朴智妍][또르르][轱辘轱辘]
- 概率论与数理统计期末考试复习总结
- BUG(12) : Configured service account doesn‘t have access. Service account may have been revoked. pod
- RabbitMQ 四种类型发送接收数据方式