构建期间的属性文件处理

时间:2012-09-11 04:56:42

标签: maven properties build maven-plugin file-processing

我的要求如下:   - 我们有四种环境(dev,uat,prod,stag)   - 目前我们有5个属性文件(例如log4j.properties),每个文件一个    环境如:log4j_dev.properties,log4j_uat.properties,log4j_prod.properties,log4j_stag.properties
  - 所有上述文件都有大部分共同点,每个文件中只有4到5个属性不同。

我目前的要求是我们必须将所有属性放在一个公共文件中(例如log4j.properties),而环境特定文件只包含 具体的4到5财产。在构建期间,应合并这些文件,并创建一个包含所有这些属性的新文件。

我尝试使用mavne 2正常工作maven-config-processor-plugin,但它与maven3不兼容。目前我们正在使用maven3,所以我需要一些替代方法。 有没有替代maven配置处理器或我需要写一些新的maven插件这样做。

任何建议plz。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用maven-resources-plugin和资源上的过滤选项

以下是一个例子:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
    <execution>
        <id>copy-resources</id>
        <phase>validate</phase>
        <goals>
            <goal>copy-resources</goal>
        </goals>
        <configuration>
            <filters>
                <filter>src/main/filters/${target.filter}.properties</filter>
            </filters>
            <resources>          
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/test/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>              
        </configuration>            
        </execution>
    </executions>
</plugin>

然后你有一个目录src / main / filters。对于每个环境,添加filter_env.properties。 在其中,你把你想要变化的键放在一起,比如这个

ys.client.service.port=8511
ys.client.service.url=http://localhost/yoda-client/service/yoda
ys.env=dev

最后,在属性文件中,添加变量而不是实际值。该插件将使用过滤器替换值:

ys.client.service.port=${ys.client.service.port}
ys.client.service.url=${ys.client.service.url}
ys.environment=${ys.env}