mavenProfile文件配置和简单入门
1什么是MavenProfile
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错.
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
2 Maven Profile入门
修改pinyougou-page-web的pom.xml
<properties>
<port>9105</port>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>${port}</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
那我们现在思考一下,如果这个端口在开发时使用9105,如果在生产环境(或其他环境)为9205呢?如何解决值的动态切换呢?运行tomcat7:run ,发现运行结果是一样的,因为port是变量,而变量值是定义为9105。这其实就是我们之前学习的maven的变量。
这时我们修改pom.xml,增加profile定义
<profiles> <profile> <id>dev</id> <properties> <port>9105</port> </properties> </profile> <profile> <id>pro</id> <properties> <port>9205</port> </properties> </profile> </profiles>
执行命令 tomcat7:run -P dev 发现以9105端口启动执行命令 tomcat7:run -P pro 发现以9205端口启动
-P 后边跟的是profile的id
如果我们只执行命令tomcat7:run ,也是以9105启动,因为我们一开始定义的变量值就是9105,就是在不指定profileID时的默认值.
3切换数据库连接配置
3.1编写不同环境的配置文件
(1)我们在pinyougou-dao工程中src/main/resources下创建filter文件夹
(2)filter文件夹下创建db_dev.properties ,用于配置开发环境用到的数据库
env.jdbc.driver=com.mysql.jdbc.Driver env.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb_pro?characterEncoding=utf-8 env.jdbc.username=root env.jdbc.password=123456
(3)filter文件夹下创建db_pro.properties
(4)修改properties下的db.properties
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
3.2定义Profile
修改pom.xml
<properties> <env>dev</env> </properties> <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> </profile> <profile> <id>pro</id> <properties> <env>pro</env> </properties> </profile> </profiles>
这里我们定义了2个profile,分别是开发环境和生产环境
3.3资源过滤与变量替换
修改pom.xml ,在build节点中添加如下配置
<filters>
<filter>src/main/resources/filters/db_${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
这里我们利用filter实现对资源文件(resouces) 过滤
maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的${key}进行替换,最终把你的资源文件中的username=${key}替换成username=value
3.4打包
在pinyougou-dao 工程 执行命令:package -P pro , 解压生成的jar包,观察db.properties配置文件内容,已经替换为生产环境的值。
在pinyougou-sellergoods-service工程 执行命令 pageage ,解压生成的war包里的pinyougou-dao的jar包,发现也是生成环境的值。
3.5测试运行
【1】连接生产数据库
(1)在pinyougou-dao 工程执行命令:install -P pro
(2)在pinyougou-sellergoods-service:执行命令:tomcat7:run
(3)在pinyougou-shop-web : 执行命令:tomcat7:run
【2】连接开发数据库
(1)在pinyougou-dao 工程执行命令:install -P dev (或 install )
(2)在pinyougou-sellergoods-service:执行命令:tomcat7:run
(3)在pinyougou-shop-web : 执行命令:tomcat7:run
4切换注册中心连接配置
4.1集中配置注册中心地址
(1)在pinyougou-common工程中properties下创建dubbox.properties
address=192.168.25.135:2181
(2)Spring目录下创建spring配置文件 applicationContext-dubbox.xml 配置如下:
<dubbo:registry protocol="zookeeper" address="${address}"/>
(3)所有的服务工程与web工程都要依赖pinyougou-common . 并删除每个工程中关于注册中心地址的配置
(4)安装pinyougou-common到本地仓库,然后测试运行。
4.2 MavenProfile配置
(1)在pinyougou-common工程中创建filters目录 ,目录下建立dubbox_dev.properties
env.address=192.168.25.135:2181
(2)建立dubbox_pro.properties
env.address=192.168.25.136:2181
(3)修改dubbox.properties
address=${env.address}
(4)修改pinyougou-common的pom.xml
<properties>
<env>dev</env>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
.............................
<build>
<filters>
<filter>src/main/resources/filters/dubbox_${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
mavenProfile文件配置和简单入门的更多相关文章
- Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门
说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...
- Django Setting文件配置和简单的创建数据库字段
Django Settings文件配置 静态文件配置 STATIC_URL = '/static/' # 静态文件配置 STATICFILES_DIRS = [ os.path.join(BASE_D ...
- Windows10下Django虚拟环境配置和简单入门实例
环境win10家庭版64位 + python 3.5 + Django 1.8.2 1.创建virtualenv目录 开始/运行/cmd回车,进入cmd窗口,到自己指定的目录下创建virtualenv ...
- Maven环境搭建以及在IDEA中的配置与简单入门
目录 一.下载与安装 二.配置 1. 环境变量 2. 阿里云镜像 3. 本地仓库 三.IDEA创建Maven项目 1. 创建一个原始的Maven项目 1.2 指定模板创建(可选) 2. 配置GAV 3 ...
- 2. 数据库文件配置与简单操作 Model / M()
官方文档说明位置: Thinkphp/Conf/convention.php 内容说明如下: 'DB_TYPE' => '', // 数据库类型 'DB_HOST' => '', // 服 ...
- Spring简单的文件配置
Spring简单的文件配置 “计应134(实验班) 凌豪” 一.Spring文件配置 spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解. 首先,要在web. ...
- MyCAT简单入门配置
MyCAT简单入门配置 安装jdk 建议1.7以上 安装mysql 安装MyCAT Mycat 源码:https://github.com/MyCATApache/Mycat-Server Mycat ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来 ...
随机推荐
- 有用的sql语句积累
⑴. sql查询未被外键关联的数据 select * from bb b where not exists (select 1 from aa a where a.bid=b.bid)
- WPF SourceInitialized 事件
这里先介绍一个窗体的事件SourceInitialized,这个时间发生在WPF窗体的资源初始化完毕,并且可以通过WindowInteropHelper获得该窗体的句柄用来与Win32交互. 具体可以 ...
- day41 mysql 学习 练习题 重要*****
MySQL 练习题[二1.表如下: 收获和注意点:***** #1 GROUP by 可以放到where s_id in ()条件局后边 GROUP BY s_id having 详见题12 #2 做 ...
- smarty学习——变量
变量的处理对于模板来说是比较重要的. Smarty有几种不同类型的变量. 变量 的类型取决于它的前缀是什么符号(或者被什么符号包围) Smarty的变量可以直接被输出或者作为函数属性和修饰符(modi ...
- Tensoflw.js - 02 - 模型与内存管理(易懂)
Tensoflw.js - 02 - 模型与内存管理(易懂) 参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/ 本文主要翻译一些英文注释,添 ...
- 解决python2安装MySQL-python模块报错
今天电脑重装系统,所有软件都重装一遍,MySQLdb模块一直装不好,纠结了好久,终于解决,方法分享给大家. MySQLdb模块安装: 1.下载MySQL-pyhon模块,网站为:https://pyp ...
- webpack 遇到报错情况及解决
webpack2 报错:optimize.OccurenceOrderPlugin is not a function. 原因:上个版本拼写错误,少写了一个字母r,新版本修正过来了.要写成这样:Occ ...
- C# List的深复制(转)
C# List的深复制 1.关于深拷贝和浅拷贝 C#支持两种类型:值类型和引用类型 值类型(Value Type):如 char, int, float,枚举类型和结构类型 引用类型(Referenc ...
- couldn't launch the emulator make sure the sdk directory is properly setup
android sdk 路径中不能有空格.转到一个没有空格的文件夹下即可.
- 如何在eclipse中安装angularjs插件
1,首先,在eclipse中使用angularjs的时候,由于没有相应的提示,导致在开发的时候给我们带来了很多的不便,需要在这上面耗费一些时间.那么这时候我们都在想可不可以让eclipse也和一些前端 ...