简单理解maven中配置文件的替换过程
2014-11-21 21:13
435 查看
摘要: maven读取配置文件并替换占位符的过程
总所周知,maven很方便使用。但就我个人而言,我使用maven一年之久,仍然对其读取配置文件感到迷惑,不明白其原理。
今天,在一个师兄的帮助下,豁然开朗。于是记录下来供大家参考。
比如现有一个工程HelloWorld,它有两个模块Hello和World,那么它的工程组织结构大致是这样的(省去了一些文件夹)。
|--HelloWorld
|----Hello
|--------src/main/resources
|------------hello.properties
|--------pom.xml
|----World
|--------/src/main/resources
|------------world.properties
|----build.properties
|----pom.xml
其中build.properties中的内容是:
hello=123
world=456
Hello模块下的hello.properties中的内容是
hello=${hello}
World模块下的world.properties中的内容是
world=${world}
我们很清楚,hello就是等于123,world就是等于456,但是在Hello和World模块下,如何才能读取到这两个值呢?
答案就是,在Hello和World模块下的pom.xml中的<build>元素中插入下面的内容:
<resources>
<resource>src/main/resources</resource>
<filtering>true</filtering>
</resources>
添加这句话的意思是替换里面的占位符${hello}和${world},
写到这里,你只是告诉maven去替换这两个占位符,但是这两个占位符的具体值是多少呢,你也要告诉maven。
怎么告诉maven呢?用插件,maven中有读取配置文件的插件。在Hello和World模块下的pom.xml中添加下面的配置
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${maven-properties-plugin.version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.parent.basedir}/build.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
上面的这个插件的意思是,在initialize生命周期的时候,读取HelloWorld/build.properties文件的内容。
这样,maven在initialize的时候已经把配置文件读取完成,然后再结合上面的<resources>元素,将对应的占位符替换。这样,maven打包之后,Hello/src/main/resources/hello.properties中的hello=123,而不是${hello},同理,World/src/main/resources/world.properties中的world=456,而不是${world}。
总所周知,maven很方便使用。但就我个人而言,我使用maven一年之久,仍然对其读取配置文件感到迷惑,不明白其原理。
今天,在一个师兄的帮助下,豁然开朗。于是记录下来供大家参考。
比如现有一个工程HelloWorld,它有两个模块Hello和World,那么它的工程组织结构大致是这样的(省去了一些文件夹)。
|--HelloWorld
|----Hello
|--------src/main/resources
|------------hello.properties
|--------pom.xml
|----World
|--------/src/main/resources
|------------world.properties
|----build.properties
|----pom.xml
其中build.properties中的内容是:
hello=123
world=456
Hello模块下的hello.properties中的内容是
hello=${hello}
World模块下的world.properties中的内容是
world=${world}
我们很清楚,hello就是等于123,world就是等于456,但是在Hello和World模块下,如何才能读取到这两个值呢?
答案就是,在Hello和World模块下的pom.xml中的<build>元素中插入下面的内容:
<resources>
<resource>src/main/resources</resource>
<filtering>true</filtering>
</resources>
添加这句话的意思是替换里面的占位符${hello}和${world},
写到这里,你只是告诉maven去替换这两个占位符,但是这两个占位符的具体值是多少呢,你也要告诉maven。
怎么告诉maven呢?用插件,maven中有读取配置文件的插件。在Hello和World模块下的pom.xml中添加下面的配置
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${maven-properties-plugin.version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.parent.basedir}/build.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
上面的这个插件的意思是,在initialize生命周期的时候,读取HelloWorld/build.properties文件的内容。
这样,maven在initialize的时候已经把配置文件读取完成,然后再结合上面的<resources>元素,将对应的占位符替换。这样,maven打包之后,Hello/src/main/resources/hello.properties中的hello=123,而不是${hello},同理,World/src/main/resources/world.properties中的world=456,而不是${world}。
相关文章推荐
- 【Spring之配置propertie资源文件】Maven整合spring profiles功能配置propertie资源文件更灵活、简单
- Maven之打包时配置文件替换
- maven打包动态替换配置文件中的值
- maven 打包时动态替换properties资源文件中的配置值
- MAVEN基础配置文件的简单介绍
- YOLO配置文件理解以及解析过程
- maven动态替换配置文件el表达式
- 简单的spring,springmvc,mybatis,maven,mysql,mongodb的一些配置文件,自己用的
- maven的setting文件简单配置
- maven 打包时动态替换properties,xml资源文件中的配置值
- [PHP]利用preg_replace替换配置文件中的预定义项_构建过程
- 使用WebUploader上传文件,,简单的配置过程
- 一个简单的ssm框架maven项目的相关配置文件
- maven 打包时动态替换properties资源文件中的配置值
- maven+spring简单的job任务配置-从远程服务器下载文件
- maven项目的pom文件中常用的简单的标签理解
- maven 生产环境、开发环境替换配置文件打包
- Spring AOP 配置文件的简单理解
- Spring+mybatis+maven整合过程加载配置文件jdbc.properties
- maven多环境配置文件设置,打包是配置文件变量替换