背景:
开发时是一个环境,机器ip地址和端口和测试机器都不一样,每次打包完都需要手动修改配置文件,很麻烦。
实现:
首相在resource文件夹下建三个文件夹:dev, test, product,这三个文件夹分别放开发,测试,生产的配置文件。
如下图:
maven在打包时,会将对应环境文件夹中的配置文件复制到resources下
然后修改项目pom.xml文件, 添加如下代码:
在plugins标签节点下添加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 覆盖原有文件 -->
<overwrite>true</overwrite>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<!-- 也可以用下面这样的方式(指定相对url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->
<!-- 待处理的资源定义 -->
<resources>
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/resources/${package.environment}</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
<inherited></inherited>
</execution>
</executions>
</plugin>
在project节点下添加:
<profiles>
<profile>
<id>dev</id>
<activation>
<!-- 默认激活 -->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 开发 -->
<package.environment>dev</package.environment>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<!-- 测试 -->
<package.environment>test</package.environment>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<!-- 生产 -->
<package.environment>product</package.environment>
</properties>
</profile>
</profiles>
打包:
在打包时运行:
测试环境打包:mvn package -Ptest -DskipTests
生产环境打包:mvn package -Pproduct -DskipTests