maven管理多环境开发部署

     在实际项目我们都需要面对不同环境的切换来展现,开发环境,测试环境,上线环境等。以往的部分做法是切换环境时,修改配置再部署。这样做有诸多不便,如可能会修改不全面,改错配置,频繁的切换部署需要专人来处理等等问题。使用maven来管理就不会出现这些问题。maven很好集成开发,测试,部署,发布 一条命令全部处理完成。部署多环境就需要用到过滤机制。

       maven过滤机制有二种:1、maven自带的过滤机制,filter和resources;    2、maven-war-plugin插件具有过滤功能,是在build时替换变量值

用dev.properties , test.properties , product.properties分别储存开始,测试,上线环境的信息。

<profiles>
		<profile>
			<id>test</id>
			<properties>
				<project.classifier>test</project.classifier>
				<project.profile.domain>no300</project.profile.domain>
			</properties>
			<build>
				<filters>
					<filter>src/main/resources/filter/local_common.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>dev</id>
			<properties>
				<project.classifier>dev</project.classifier>
				<project.profile.domain>no100</project.profile.domain>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>			
		</profile>
		<profile>
			<id>product</id>			
			<properties>
				<project.classifier>product</project.classifier>
				<project.profile.domain>product</project.profile.domain>
			</properties>
		</profile>
	</profiles>
<build>
		<finalName>example-maven</finalName>
		<filters>
			<filter>src/main/resources/filter/common_${project.classifier}.properties</filter>
			<filter>src/main/resources/filter/multidomain_${currentDomain}.properties</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>


上面是自带的过滤机制,用命令 mvn clean package -Ptest 表示打测试环境的包。 这个打包替换有个局限,只替换resource资源文件的占位符,对于在webapp下的jsp等文件并没有起作用。   这时就需要使用第二种过滤机制,maven-war-plugin插件。

<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<filters>
						<filter>src/main/resources/filter/common_${project.classifier}.properties</filter>
						<filter>src/main/resources/filter/multidomain_${currentDomain}.properties</filter>
					</filters>
					<webResources>
						<resource>
							<directory>src/main/webapp/WEB-INF</directory>
							<filtering>false</filtering>
						</resource>
						<resource>
							<filtering>true</filtering>
							<directory>src/main/webapp</directory>
						</resource>
					</webResources>
				</configuration>
			</plugin>
</plugins>


使用maven-war-plugin插件,需要注意版本。2.2和2.4有很多区别。2.2不使用filters属性也能够替换jsp中的占位变量,但它在copyfile时使用操作系统字符编码,不能外界修改,所以在window下编码的文件会出现中文乱码问题。2.4版本已经处理了中文编码问题,可以通过project.build.sourceEncoding传值UTF-8设置编码,但同时必需显式使用filters属性,而不能用上级全局共用的filters。


群组138919906,大家共同学习进步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值