maven实现多环境配置

#maven实现多环境配置

##场景
在开发中,我们会有多个环境:开发环境测试环境线上环境。可能每个开发人员都会有自己的环境。

每个环境的一些配置文件可能是不同的,

简单的如:每个环境的数据库账号和密码是不同的。

最笨的做法:如果每个开发人员的密码不同,我们会利用规范去统一密码,对于测试和线上环境,不可能做到一样,一些配置文件值在不同环境是不同的,如果每次在不同环境构建代码,需要
在每次提交代码的时候修改配置文件,这样会带来两个缺点:

  • 可能在每次上线或进行测试的时候忘记修改配置值。
  • 大量重复的劳动,不符合程序猿的提高生产力精神。

如果你觉的以上两点都没什么大不了,以下内容可以忽略。

##maven的profiles解决配置文件多环境

增加多环境目录

单环境下的配置文件:
marketking.properties是直接放在resources目录下。

多环境下,在reseouces下新建三个目录

  • dev. 开发环境
  • production 线上环境
  • test 测试环境

把marketking.properties 移动到上面上个目录。

###pom.xml配置

####增加 profiles
增加 profiles (profiles与dependencies为兄弟关系)

<profiles>
	<profile>
		<id>dev</id>
		<properties>
			<env>dev</env>
		</properties>
		<activation>
		<!--默认为开发环境 -->
			<activeByDefault>true</activeByDefault>
		</activation/>
	</profile>
	
	<profile>
		<id>test</id>
		<properties>
			<env>test</env>
		</properties>
	</profile>
	
	<profile>
		<id>production</id>
		<properties>
			<env>production</env>
		</properties>
	</profile>
 <profiles>

####增加 resources

在<build></build>增加子节点<resources></resources>
<resources>
		<resource>
			<directory>${project.basedir}/src/main/resources</directory>
			<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
			<excludes>
				<exclude>test/*</exclude>
				<exclude>dev/*</exclude>
				<exclude>production/*</exclude>
			</excludes>
		</resource>
		<resource>
			<directory>src/main/resources/${env}</directory>
		</resource>
</resources>

###mavne构建

如果要发布不同的环境的配置文件,使用一下命令

 mvn clean package -Ptest   //测试环境
 mvn clean package -Pdev 	  //开发环境

到这里你就可以,多个环境使用不同的配置文件,在结合jenkins,这效率。棒

IDEA查看当前使用的环境

##遇到的坑

启动项目之后,浏览器运行,一直报404错误 ,控制台输出:

No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'springServlet’

并且接口可以访问。

根据信息,可能是路径问题并且与spring-mvc有关。查看web.xml,spring-mvc.xml 文件没有发现什么问题。

原因二:也是我的错误所在,就是把springmvc.xml放在了自己新建的文件夹里,然而这个文件夹是个 Source Folder ,当在web.xml里面 里面配置value的时候这样写才不会在启动tomcat的时候出现失败的情况:

忽然想起来,在开始进行配置的时候,把所有的配置文件都分别放了三个环境。最后只把marketking.properties 放在了三个环境。

之后对比其他稳定分支,发现在web.xml

被修改为了(IEAD行为):
classpath:/src/main/resources/spring-mvc.xml**

稳定分支web.xml

<servlet>
    <servlet-name>springServlet</servlet-name>
	    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:/spring-mvc*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
  </servlet>

最后整个配置过程也很简单,但是由于关于maven的基础不是很扎实,并且对web.xml文件里细节都有点遗忘了。

还是那句话:万丈高楼平地起,勿在浮沙筑高台

参考:

http://www.cnblogs.com/of-course/p/6055311.html
http://blog.csdn.net/mn960mn/article/details/42421531
http://blog.csdn.net/mhmyqn/article/details/24501281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值