使用maven profile指定配置文件打包适用多环境

1.新建maven项目,   在pom.xml中添加 profile节点信息如下:

<profiles>
		<profile>
			<!-- 开发环境 -->
			<id>dev</id>
			<properties>
				<environment>development</environment><!-- 节点名字environment是自己随意取的 -->
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->
			</activation>
		</profile>
		<profile>
			<!-- 测试环境 -->
			<id>test</id>
			<properties>
				<environment>test</environment>
			</properties>
		</profile>
		<profile>
			<!-- 预演环境 -->
			<id>prev</id>
			<properties>
				<environment>preview</environment>
			</properties>
		</profile>
		<profile>
			<!-- 生产环境 -->
			<id>prod</id>
			<properties>
				<environment>production</environment>
			</properties>
		</profile>
</profiles>

 2. 在项目中添加各环境需要的数据源配置文件,分不同目录存放, 分别是开发,测试, 预演,生产  环境. 如下图左边部分所示.  

3. pom.xml中配置resource节点信息.

	<build>			
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>environment/development/*</exclude>  
					<exclude>environment/test/*</exclude>  
					<exclude>environment/preview/*</exclude>  
                	<exclude>environment/production/**</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources/environment/${environment}</directory>
				<targetPath>environment/${environment}</targetPath>
			</resource>
		</resources>
	</build>

resource节点信息解释: 

<directory>src/main/resources</directory> <!--打包时包含src/main/resources目录下所有"子"文件 和 "孙"文件.如config 和environment -->
<exclude>environment/development/**</exclude> <!--打包时排除src/main/resources/environment/development下所有"子"文件 和 "孙"文件.-->
<exclude>environment/test/**</exclude> <!--打包时排除src/main/resources/environment/test下所有"子"文件 和 "孙"文件.-->
<exclude>environment/preview/**</exclude> <!--打包时排除src/main/resources/environment/preview下所有"子"文件 和 "孙"文件.-->
<exclude>environment/production/**</exclude><!--打包时排除src/main/resources/environment/production下所有"子"文件 和 "孙"文件.-->
<!-- 注意点: 如果写一个心号*, 如<exclude>environment/development/*</exclude> 则表示:打包时排除src/main/resources/environment/development下所有"子"文件, 不排除"孙"文件, 如上一个截图所示.-->
<!-- 以上配置优先度从上到下 递增, 这就达到目的: config目录下的配置各环境都需要, 而其它环境相关的配置只会有一个目录被打包--->
<directory>src/main/resources/environment/${environment}</directory> <!-- 打包时包含src/main/resources/environment/${environment}下所有"子"文件,environment变量值来自profile中赋值 -->
<targetPath>environment/${environment}</targetPath><!--指定src/main/resources/environment/${environment}所有"子文件" 打包 到包的哪个目录 -->

4.  项目打包.   打包命令mvn package -Pdev来指定激活id为 dev 的profile节点, 这样, 开发环境配置文件就会被打包.
开发: mvn package -Pdev (因为配置了默认激活dev部分, 所以也可以使用mvn package, 这与 mvn package -Pdev 效果相同)
测试: mvn package -Ptest
预演:mvn package -Pprev
生产:mvn package -Pprod

 

除此方法外动态的指定配置文件我们还可以使用ClassPathXmlApplicationContext

1.创建一个xml文件config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
    <!--配置文件对象,id是唯一标识,class是对应的配置类,property是配置字段-->
	<bean id="test" class="flink_job.omega_navigation_filter.object.Config">
		<property name="source_kafka_topic_1" value="topic1" />
		<property name="source_kafka_server_1" value="bigdata-swan:9092" />
		<property name="source_kafka_group_id_1" value="ora_log_20171031" />
		<property name="source_kafka_offset_1" value="latest" />
		<property name="output_kafka_topic" value="w_omega_stat_native_fmt" />
		<property name="output_kafka_server" value="bigdata-swan:9092" />
		
	</bean>
   <bean id="local" class="flink_job.omega_navigation_filter.object.Config">
		<property name="source_kafka_topic_1" value="topic1" />
		<property name="source_kafka_server_1" value="bigdata-swan:9092" />
		<property name="source_kafka_group_id_1" value="ora_log_20171031" />
		<property name="source_kafka_offset_1" value="latest" />
		<property name="output_kafka_topic" value="w_omega_stat_native_fmt" />
		<property name="output_kafka_server" value="bigdata-swan:9092" />
		
	</bean>
</beans>

2.创建对应的配置类config

public class Config implements Serializable{
	private static final long serialVersionUID = 1L;
	private String source_kafka_topic_1;
	private String source_kafka_server_1;
	private String source_kafka_group_id_1;
	private String source_kafka_offset_1;
	private String source_kafka_topic_2;
	private String source_kafka_server_2;
	private String source_kafka_group_id_2;
	private String source_kafka_offset_2;
	private String output_kafka_topic;
	private String output_kafka_server;
	
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public String getSource_kafka_topic_1() {
		return source_kafka_topic_1;
	}
	public void setSource_kafka_topic_1(String source_kafka_topic_1) {
		this.source_kafka_topic_1 = source_kafka_topic_1;
	}
	public String getSource_kafka_server_1() {
		return source_kafka_server_1;
	}
	public void setSource_kafka_server_1(String source_kafka_server_1) {
		this.source_kafka_server_1 = source_kafka_server_1;
	}
	public String getSource_kafka_group_id_1() {
		return source_kafka_group_id_1;
	}
	public void setSource_kafka_group_id_1(String source_kafka_group_id_1) {
		this.source_kafka_group_id_1 = source_kafka_group_id_1;
	}
	public String getSource_kafka_offset_1() {
		return source_kafka_offset_1;
	}
	public void setSource_kafka_offset_1(String source_kafka_offset_1) {
		this.source_kafka_offset_1 = source_kafka_offset_1;
	}
	public String getSource_kafka_topic_2() {
		return source_kafka_topic_2;
	}
	public void setSource_kafka_topic_2(String source_kafka_topic_2) {
		this.source_kafka_topic_2 = source_kafka_topic_2;
	}
	public String getSource_kafka_server_2() {
		return source_kafka_server_2;
	}
	public void setSource_kafka_server_2(String source_kafka_server_2) {
		this.source_kafka_server_2 = source_kafka_server_2;
	}
	public String getSource_kafka_group_id_2() {
		return source_kafka_group_id_2;
	}
	public void setSource_kafka_group_id_2(String source_kafka_group_id_2) {
		this.source_kafka_group_id_2 = source_kafka_group_id_2;
	}
	public String getSource_kafka_offset_2() {
		return source_kafka_offset_2;
	}
	public void setSource_kafka_offset_2(String source_kafka_offset_2) {
		this.source_kafka_offset_2 = source_kafka_offset_2;
	}
	public String getOutput_kafka_topic() {
		return output_kafka_topic;
	}
	public void setOutput_kafka_topic(String output_kafka_topic) {
		this.output_kafka_topic = output_kafka_topic;
	}
	public String getOutput_kafka_server() {
		return output_kafka_server;
	}
	public void setOutput_kafka_server(String output_kafka_server) {
		this.output_kafka_server = output_kafka_server;
	}
	
}

3.程序中指定调用的配置对象的id

public static ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");
	public static Config co = (Config) ctx.getBean("test");

这样我们就能获取对应的字段

转载于:https://my.oschina.net/u/2000675/blog/1559188

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值