您的位置:首页 > 其它

使用 maven 打包配置文件

2015-11-30 17:16 232 查看
以往项目部署时, 项目的相关配置文件会在服务器上的部署脚本中被替换, 这样导致的问题是: 服务器上的配置文件缺少维护, 并不能被开发人员及时看到,因此在部署时因为配置文件导致的问题频发.

我们希望在编译打包的过程中,将对应的配置文件导入到相应的位置,这样服务器就仅需要做好部署的工作就可以了.

 

下面以web 项目为例

 


项目下面的env 目录存放环境变量(仅web项目)

 

dev 代表本地开发环境

qa 代表测试服务器环境

product代表生产服务器环境

 

具体配置文件如何存放应该根据项目的不同而区别对待

resources 中的配置文件最终被编译打包后放在 WEB-INF/classes中

webinfo 中的配置文件最终被编译打包后在 WEB-INF中

 

下面介绍一下 maven的 profiles



Web项目的pom 中有这么一段

这段的意思是 不同的profiles参数会设定不同的变量值

既 package.env=dev/qa/product

  


 这个标签代表省缺情况下 使用dev   

 Ok,这样写完后 就可以根据mvn的profiles 参数而设定了package.env的值

package.env变量的值将在下面这个插件: maven-war-plugins 中使用



        

Ok <directory> 设定源路径 <targetPath>设置目标路径

该插件在编译时将会把<directory> 中的文件导入到<targetPath> 中去

下面来介绍 maven 的几种常用命令以及 profiles的用法

 

mvn clean 清理项目生产的临时文件,一般是模块下的target目录 

mvn compile 在target目录下编译生成class

mvn package 在 target 目录下打包生成 jar/war等

mvn install 安装到maven仓库中

mvn test 测试命令,或执行src/test/java/下junit的测试用例. (目前没有用到)

 

profiles 使用时 只需要在上述命令后面 加上 -P[profiles],例如

如果你的操作系统是windows ,并且maven安装配置正确

在CMD中将当前目录移至pom.xml所存在的目录下:

mvn package –Pdev 就可以就将该项目 打包到targert 中并且使用了profiles= dev



在这里 mvn package = mvn package –Pdev

Eclipse 中 pom 上 右键run as -> maven build

 


 

还有一个问题需要解决就是maven 的目录结构

 


上面是maven默认的目录结构

但是我们的项目并没有完全遵守,比如



这样导致的结果是编译出错,这就需要借助下面两个插件:

 

maven-resources-plugin

 


有了这个插件我们就可以在 build 标签下添加需要加入的resources目录



build-helper-maven-plugin



这个插件可以增加源文件的目录

 

 

 

 

打包的其他方法:

使用 一个parent 项目让其他项目作为他的module ,

pom如下

 


注意 packaging 的值是pom

他使用了 modules 标签将其他的项目作为自己的模块

为他执行install 就会自动根据依赖顺序进行打包,可以参考:

http://juvenshun.iteye.com/blog/305865

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: