MAVEN实现多环境搭建
在实际的开发中,会遇到开发环境的不同(开发环境,测试环境,线上环境),会来回根据环境的不同修改配置文件,一不小心修改错误导致无法正常运行,故障排除导致开发效率低。使用maven可以根据环境的不同,自动生成需要的配置文件,减少因为配置文件配置错误导致的人为故障
实现环境:j2ee环境
dev.properties配置文件的内容
db.username=name_dev
db.password=password_dev
local.properties配置文件的内容
db.username=name_local
db.password=password_local
config.properties配置文件的内容
db.username=${db.username}
db.password=${db.password}
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.major</groupId>
<artifactId>mavenTest</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mavenTest Maven Webapp</name> <!-- 项目依赖包 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies> <!-- 项目配置文件 -->
<profiles>
<profile>
<!-- 定义local配置文件 -->
<id>local</id>
<properties>
<!-- 定义变量package.env为local,为后面调用 -->
<package.dev>local</package.dev>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<package.dev>dev</package.dev>
</properties>
</profile>
</profiles> <!-- 打包配置 -->
<build>
<plugins>
<!-- 配置打包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<!-- 配置jdk版本 -->
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin> <!-- 配置war插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<warName>${project.artifactId}</warName>
<!-- 排除不需要的配置文件,如果不排除env目录下的配置文件,会导致env目录下的配置文件也会打包到war包中 -->
<excludes>src/env</excludes>
</configuration>
</plugin>
</plugins> <!-- 配置资源文件 -->
<resources>
<resource>
<!-- 该资源目录,其中${basedir}表示maven项目根目录 -->
<directory>${basedir}/src/main/resources</directory>
<!-- 包含文件,如果不过滤文件,可以使用*代替所有 -->
<includes>
<include>config.properties</include>
</includes>
<!-- 是否对包括的文件进行过滤(就是使用配置文件中的内容替换改文件中的变量) -->
<filtering>true</filtering>
</resource>
</resources> <!-- 配置文件过滤 -->
<filters>
<!-- 使用该配置文件内容替换资源文件,其中 ${package.dev}为上面定义的变量,如果选择dev则为dev.properties中的内容来替换-->
<filter>
${basedir}/src/env/${package.dev}.properties
</filter>
</filters>
</build> </project>
开始maven编译:
右击项目-->maven-->select maven profiles选择配置文件
右击项目-->run as --> maven install
控制台输出信息
这个时候可以在该项目的目录下的target目录中找到编译好的war包
打开可以看到配置文件已经自动完成替换
到此完成maven多环境配置搭建,如果是开发环境,可以选择local,如果时线上环境,可以选择dev,当然有可以添加多个适应多个开发环境的使用
MAVEN实现多环境搭建的更多相关文章
- Jenkins+Maven+Git CI环境搭建手册
Jenkins+Maven+Git CI环境搭建手册 环境: OS:Linux version 2.6.32-220.23.2.ali878.el6.x86_64 (ads@kbuild) (gcc ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
- 项目管理利器maven学习笔记(一):maven介绍及环境搭建
maven介绍 maven下载与环境搭建 http://maven.apache.org/download.cgi# 解压到指定位置,比如我解压到D盘 设置maven环境变量 添加一个变量名,变量值为 ...
- Eclipse+maven+scala+spark环境搭建
准备条件 我用的Eclipse版本 Eclipse Java EE IDE for Web Developers. Version: Luna Release (4.4.0) 我用的是Eclipse ...
- Maven介绍及环境搭建
Maven介绍及环境搭建 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. 下载Maven boot:类加载器框架,Maven使用它加在自 ...
- centos7下Maven Java selenium3环境搭建
centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...
- Maven快速入门(一)Maven介绍及环境搭建
做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...
- Maven仓库—Nexus环境搭建及简单介绍
1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...
- Appium+Maven+TestNG(ReportNG)环境搭建(详细过程)
最近群里经常有人会问到关于maven构建Appium测试项目以及使用testNG生成测试报告的问题,试着搭建了一下,下面是过程: jdk安装过程我这里就不说了 一.下载eclipse,推荐下载Ecli ...
- Maven仓库-Nexus环境搭建及简单介绍
1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件——免费] NE ...
随机推荐
- MongoDB_走一波
Mongodb 一.mongodb的介绍 mongodb的优势 易扩展:NoSQL数据库种类繁多,但是一个共同的特定就是去掉关系数据库的关系型特性.数据之间无关系,这样非常容易扩展 大数据,高性能:N ...
- Linux用户权限常见命令
01. 用户 和 权限 的基本概念 1.1 基本概念 用户 是 Linux 系统工作中重要的一环,用户管理包括 用户 与 组 管理 在 Linux 系统中,不论是由本机或是远程登录系统,每个系统都必须 ...
- vue路由简单实用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux设置网络三种方法
http://blog.csdn.net/u010003835/article/details/52233296
- 吴裕雄--天生自然GPU配置:查看本机显卡是否支持GPU
NVIDIA的GF8级别以上的显卡才能支持physx物理加速(即GPU加速),ATI的显卡不支持. 打开:设备管理器,点击:显示适配器
- Android java项目中引用kotlin,混合开发工程配置
https://www.jianshu.com/p/9220227cdfb3 buildscript { ext.kotlin_version = '1.2.71' repositories { go ...
- AQS: 什么是AQS?
AQS定义了一套多线程访问共享资源的同步器框架. 许多同步类实现都依赖于它,如常用的ReentrantLock/ReentrantReadWriterLock/CountDownLatch这些类里面都 ...
- 吴裕雄--天生自然 PYTHON3开发学习:条件控制
if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 var1 = ...
- trie(字典树)原理及C++代码实现
字典树,又称前缀树,是用于存储大量字符串或类似数据的数据结构. 它的原理是利用相同前缀来减少查询字符串的时间. 不同于BST把关键字保存在本结点中,TRIE可以想象成把关键字和下一个结点的指针绑定,事 ...
- poj-3661 Running(DP)
http://poj.org/problem?id=3661 Description The cows are trying to become better athletes, so Bessie ...