Maven根据配置文件更改文件中的值

问题描述:

我的应用程序中有一个名为ApplicationResources.properties的属性文件,其属性根据环境而变化。让我们说的属性是:Maven根据配置文件更改文件中的值

 resources.location=/home/username/resources 

和发展时,当应用程序投入生产过程中执行的应用程序这个值是不同的。

我知道我可以在Maven中使用不同的配置文件在不同的环境中执行不同的构建任务。我想要做的是以某种方式根据所使用的Maven配置文件替换属性文件中的resources.location的值。这甚至有可能吗?

我想要做的是以某种方式根据所使用的Maven配置文件替换属性文件中resources.location的值。这甚至有可能吗?

是的。激活资源过滤并定义要在每个配置文件中替换的值。

在你ApplicationResources.properties,声明令牌替换这样的:

resources.location=${your.location} 

在你的POM,加<filtering>标签为适当<resource>并将其设置为true这样的:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
     ... 
    </resources> 
    ... 
    </build> 
    ... 
</project> 

然后,在每个配置文件内的<properties>元素内添加一个<your.location>元素:

<project> 
    ... 
    <profiles> 
    <profile> 
     <id>my-profile</id> 
     ... 
     <properties> 
     <your.location>/home/username/resources</your.location> 
     </properties> 
     ... 
    </profile> 
    ... 
    </profiles> 
</project> 

关于过滤资源herehere的更多信息。

+1

@Pascal Thivent谢谢。这是一个很好的解释 – 2010-02-25 17:06:53

+0

+1我第二个:D – ant 2010-02-25 23:10:05