maven 如何为开发和生产环境建立不同的配置文件

src/main目录下原来有 java, resources, 新建环境相关的配置文件目录:

resources : 一些共享的配置文件
environment/dev : 开发环境下用的配置文件, 打包时会覆盖resources目录下的同名文件.
environment/test : 测试环境下用的配置文件, 打包时会覆盖resources目录下的同名文件.
environment/prod : 生产环境下用的配置文件, 打包时会覆盖resources目录下的同名文件.

本机开发时设置源码目录为 java, resources, 可直接开发调试.

编译的时候希望maven根据不同环境, 打包不同目录下的文件, 我们利用maven的profile和maven-resources-plugin插件来实现这个目标.

运行 mvn clean package -P test 打包.

pom.xml相关配置如下:

	<!-- == 配置开发/测试/生产环境 == -->

        <properties>
		<package.target>prod</package.target>
	</properties>

	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<package.target>dev</package.target>
			</properties>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<package.target>test</package.target>
			</properties>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<package.target>prod</package.target>
			</properties>
		</profile>
	</profiles>

       <!-- == 使用maven-resources-plugin拷贝不同环境下的资源 == -->
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.5</version>
				<executions>
					<execution>
						<id>copy-resources</id>
						<phase>generate-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>target/classes</outputDirectory>
							<resources>
								<resource>
									<directory>src/main/environment/${package.target}</directory>
								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin>

		</plugins>
	</build>

No Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

粤ICP备15062915号-1