发布时在不同的环境使用不同的配置文件

发表时间:2017-12-07 11:22:25 浏览量( 25 ) 留言数( 0 )

学习目标:

1、了解的打包过滤命令

2、能在不同的环境下面打包不同的配置文件信息


学习过程:

但是每一个maven工程(比如web项目),开发人员在开发时,会使用一种配置文件,比如数据库配置,而测试环境可能使用另一种配置文件。打包完成后,手动调整配置文件,工作重复度很高,因此查找方法,实现“maven根据不同的运行环境,打包不同的配置文件”的目的。

建立过滤目录并建立不同环境下面的配置文件

attcontent/16451a9a-3a82-442c-a455-f97ffa42e399.png

src/main/resources下面的jdbc.properties,并没有写硬编码,内容如下:

jdbc_driverClassName=${jdbc_driverClassName}
jdbc_url=${jdbc_url}
jdbc_username=${jdbc_username}
jdbc_password=${jdbc_password}

src/main/filters是我们新建的目录结构,下面分为开发环境和正式环境两个不同的环境的配置。两个的数据库账号密码是不一样的。我们客户以分别看看

开发环境的:

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/javadayupdb?useUnicode=true&characterEncoding=UTF8
jdbc_username=root
jdbc_password=123456

正式环境:

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/javadayupdb?useUnicode=true&characterEncoding=UTF8
jdbc_username=liubao
jdbc_password=$$javadayupday


修改pom.xml文件

	<profiles>
		<!-- 开发/测试环境,默认激活 -->
		<profile>
			<id>dev</id>
			<properties>
				<env>dev</env>
				<deploy.environment>local</deploy.environment>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault><!--默认启用的是dev环境配置 -->
			</activation>
		</profile>
		<!-- 生产环境 -->
		<profile>
			<id>prod</id>
			<properties>
				<env>prod</env>
			</properties>
		</profile>
	</profiles>


需要过滤的文件

		<filters>
			<!-- 指定使用的 filter 运行时候记得clean -P 运行环境 , 比如: mvn clean install -Dmaven.test.skip=true 
				-P dev 或 -P prod 平时打包命令 : clean package -P prod src/main/filters -->
			<filter>src/main/filters/filter-${env}.properties</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering> <!-- 是否使用过滤器 -->
			</resource>

			<resource>
				<directory>src/main/assembly</directory>
				<filtering>true</filtering> <!-- 是否使用过滤器 -->
			</resource>
		</resources>


因为开发环境是默认的配置,所以我们并没有影响我们的正常开发,如果需要部署到正式环境可以使用一下命令

clean install -P prod

你可以看看打包出来的war下面的配置文件已经改变了。