在项目开发时,我们本地搭建的开发dev环境,开发完成打包部署到服务器时,用到的是服务器prod环境。可以借用Maven的profiles、filters和resources,在运行或打包时指定选用的环境,实现不同环境自动使用各自环境的配置文件或配置信息。
maven profile可使用操作系统信息,jdk信息,文件是否存在,属性值等作为依据,来激活相应的profile,也可在编译阶段,通过mvn命令加参数 -P profileId 来手工激活使用对应的profile。
Maven的标准目录结构
src
-main
–bin 脚本库
–java java 源代码文件
–resources 资源库,会自动复制到classes目录里
–filters 资源过滤文件
–assembly 组件的描述配置(如何打包)
–config 配置文件
–webapp web应用的目录。WEB-INF、css、js等
-test
–java 单元测试java源代码文件
–resources 测试需要用的资源库
–filters 测试资源过滤库
-site Site (一些文档)
target 存放项目构建后的文件和目录,jar包、war包、编译的class文件等
LICENSE.txt
README.txt
filters 目录存放资源过滤文件,
- 我们可以在 main 目录下新建 filters 目录
- 在 filters 目录下新建各个环境配置文件夹(这一步是必要的)
- 在其中放入各个环境的配置文件
项目目录

POM配置
<project>
...
<!-- 定义项目环境 -->
<profiles>
<profile>
<!-- profile id -->
<id>dev</id>
<properties>
<!-- 与 filters 目录下的文件夹同名,与 mvn 命令参数同名 -->
<profile.active>dev</profile.active>
</properties>
<!-- 默认激活 dev 环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
</profiles>
<build>
<!-- 指定maven编译资源文件位置 -->
<resources>
<!-- 编译 src/main/resources 中的资源文件 -->
<resource>
<directory>src/main/resources</directory>
</resource>
<!-- 根据不同的 mvn 命令参数编译 filters 目录中指定的配置文件 -->
<resource>
<directory>src/main/filters/${profile.active}</directory>
</resource>
</resources>
...
</build>
...
</project>
我们可以使用命令针对不同的配置环境使用不同的配置文件进行打包:
开发环境:mvn clean package -P dev
测试环境:mvn clean package -P test
生产环境:mvn clean package -P pro
编译目录

309



被折叠的 条评论
为什么被折叠?



