利用maven-war-plugin实现不同环境下的配置文件

我这是一个标准的maven的目录结构,配置文件都在src/main/resources根目录下。因为要改成多环境的配置,所以只有properties的文件改变了(公共配置可以原地不动)

1.将配置文件放到不同的文件夹下

2.创建2个不同的profile,一个是生产环境配置(prod),一个是开发环境配置(dev),分别与步骤1中的两个文件夹名对应一致

<profiles>

<!-- 不同环境的配置代码 -->

<profile>

<id>dev</id>

<properties>

<package.environment>dev</package.environment>

</properties>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

</profile>

<profile>

<id>prod</id>

<properties>

<package.environment>prod</package.environment>

</properties>

</profile>

</profiles>

 

3.设置变量

<package.environment>dev</package.environment>

4.对resources下的目录进行处理

<resources>

<resource>

<directory>src/main/resources</directory>

<filtering>false</filtering>

<excludes>

<exclude>prod/*</exclude>

<exclude>dev/*</exclude>

</excludes>

</resource>

</resources>

上面那个filtering,之前看别人的示例是true。发现这样的话,springContext.xml中类似{url}、{filters}(druid连接池的属性,本来用prod/jdbc.properties和dev/jdbc.properties的配置)就变成了pom.xml中url的属性值了(替换成了http://maven.apache.org

5. maven-war-plugin的配置

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>2.3</version>

<configuration>

<archive>

<addMavenDescriptor>false</addMavenDescriptor>

</archive>

<warName>${project.artifactId}</warName>

<webResources>

<resource>

<directory>src/main/resources/${package.environment}</directory>

<targetPath>WEB-INF/classes</targetPath>

<filtering>true</filtering>

</resource>

</webResources>

</configuration>

</plugin>

上面的${project.artifactId}是pom.xml的内置属性,${package.environment}是定义的属性

6.打包

打包之前别忘了update下project,因为pom.xml已经被修改过了

选择项目路径,填好打包命令(我是用的eclipse,所以省略了mvn的字样)

package -P dev 就是用开发环境的配置,package -P prod就是用生产环境的配置

打包成功后,看包结构,虽然也有dev/prod两个文件,但在src/main/resources根目录下已经生成了那三个配置文件,而我web.xml也只是加载了 src/main/resources根目录的配置文件,所以dev和prod对项目本身没有冲突

 

 

=================================================================

但是这样的话,eclipse在本地调试的话,没法用tomcat启动,所以改成用maven的tomcat来进行启动

(tomcat7的命令是 tomcat7:run)

1.配置maven的tomcat插件

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

<configuration>

<port>80</port>

<path>/fitness</path>

<uriEncoding>UTF-8</uriEncoding>

<server>tomcat7</server>

</configuration>

</plugin>

上面我用到了80的端口,用的tomcat7

2.在依赖中不能添加tomcat的依赖包

3.对javax.servlet-api和javaee-api的scope要加限制,限制成provided

如下:

这样通过命令就能启动了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值