您的位置:首页 > 其它

简单理解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 替换占位符