Maven根据不同环境打包不同配置文件的方法

网友投稿 364 2023-01-24


Maven根据不同环境打包不同配置文件的方法

开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就显得非常笨重了。

下面介绍一种方法,利用Maven插件来打包不同环境的配置文件。我们用到的是maven-war-plugin这个插件。

首先贴出整个pom文件:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

cms

CMS

war

0.0.1-SNAPSHOT

Cms

http://maven.apache.org

4.1.6.RELEASE

UTF-8

dev

dev

true

test

test

prod

prod

Cms

src

maven-compiler-plugin

3.3

1.7

1.7

org.apache.maven.plugins

maven-war-plugin

2.1.1

WebRoot\WEB-INF\web.xml

WebRoot

false

Cms

src/main/resorecUuMJRLBnes/${package.environment}

WEB-INF/classes

true

src

true

**/*.properties

**/*.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

cms

CMS

war

0.0.1-SNAPSHOT

Cms

http://maven.apache.org

4.1.6.RELEASE

UTF-8

dev

dev

true

test

test

prod

prod

Cms

src

maven-compiler-plugin

3.3

1.7

1.7

org.apache.maven.plugins

maven-war-plugin

2.1.1

WebRoot\WEB-INF\web.xml

WebRoot

false

Cms

src/main/resorecUuMJRLBnes/${package.environment}

WEB-INF/classes

true

src

true

**/*.properties

**/*.xml

简单说明几个地方:

dev

dev

true

test

test

prod

prod

此处借助profiles定义几个不同的环境文件夹,相同的需要在项目里面创建同id的文件夹,用来存放特定环境的配置文件。

我之前的resource目录:

我的目录结构是相对复杂的一种有2层目录,只有一层目录的也一样更简单。外层xml文件,还有一个properties文件夹。这里我针对不同环境需要更改的配置文件有4个,标红的。

再看一下改造后resource的目录结构:

随便展开一个dev文件夹是这样:

可见需要更改的配置文件,需要copy到各个环境的文件夹当中去,而不需要更改的文件,则不需要复制一份。

此处需要说明的是,如果我指定的是dev,则maven会将dev下的所有文件拿出来,db.xml覆盖掉外面的db.xml,dev.properties文件夹中的配置文件会拿出来放到外面的properties文件夹中。所以说这里是非常灵活的,你需要哪些文件定制,完全由自己来控制。

再来看pom文件

org.apache.maven.plugins

maven-war-plugin

2.1.1

WebRoot\WEB-INF\web.xml

WebRoot</warSourceDirectory>

false

test

src/main/resources/${package.environment}

WEB-INF/classes

true

这里使用的是

maven-war-plugin

这个插件,此插件的功能是很强大的,想深入了解,可以到官网去看。

${package.environment}

动态指定目录,接收参数。

targetPath

目标路径。

另外说2点,这两个标签

WebRoot\WEB-INF\web.xml

WebRoot

1.如果maven打包错误说找不到web.xml,说明你得项目结构不是标准的,用webxml标签指定一下就可以了

2.如果jsp打包没有的话,同样的问题,指定一下目录,我的项目结构就不是maven标准结构,所以需要指定一下。

改造完毕,接下来就是利用maven打包了。

mvn clean ; mvn compile;

mvn -P test package; 传相应环境参数就ok了


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:怎么永久连接共享文件夹(怎样连接到共享文件夹)
下一篇:微服务接口自动化测试框架(服务端自动化测试框架)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~