【问题标题】:Property File Processing during build time构建期间的属性文件处理
【发布时间】:2012-09-03 23:40:26
【问题描述】:

我的要求如下: - 我们有四种环境(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属性。在构建期间,这些文件应该被合并,并且应该创建一个包含所有这些属性的新文件。

我试过 maven-config-processor-plugin 可以正常使用 mavne 2 ,但它与 maven3 不兼容。目前我们正在使用 maven3,所以我需要一些替代方法。 是否有任何替代 maven config-processor 或者我需要为此编写一些新的 maven 插件。

任何建议请。

【问题讨论】:

  • 据我所知the plugin's site - 它与 Maven 3 兼容。你能解释一下不兼容问题在哪里吗?
  • 如果您的要求是在战争中嵌入特定的配置文件,您可以尝试多次执行战争插件,这会创建带有有用后缀的战争工件:stackoverflow.com/questions/3866784/…

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


【解决方案1】:

您是否尝试过使用 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}

【讨论】:

  • thanx yodamad 这对我真的很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多