通过包含另一个属性文件来扩展属性文件。 Maven的

时间:2015-01-14 22:53:06

标签: java maven properties-file

我可以使用' include'选项(或类似的东西)将任何属性文件包含到另一个属性文件中?

所以,我有两个属性文件: 1." firstPropertiesFile"其中包含下一个字符串:

include = secondPropertiesFile#it第二个属性文件的路径

" secondPropertiesFile"其中包含下一个字符串:

key = value

此外,我有资源文件(将按资源过滤的文件:资源目标)包含:

$ {键}

当我调用资源:资源目标时,我期待接下来的步骤:

  1. 参考资源插件查看firstPropertiesFile文件并查看它包含引用另一个属性文件。

  2. 插件转到引用(第二个属性文件的路径)并查看必要的键并获取值(在我们的case-value中)。

  3. 但这种方式在maven中不起作用。你能告诉我如何实现这个目标吗?

    P.S。 Apache Commons配置支持此选项:http://commons.apache.org/proper/commons-configuration/userguide/howto_properties.html ("包括"章节)。

2 个答案:

答案 0 :(得分:1)

标准Java属性没有内置任何内容来执行此操作,如果需要,您需要对其进行编码或使用已经执行此操作的库。

答案 1 :(得分:1)

在Maven中,你可以实现非常相似的Properties Maven Plugin

我不支持您期望的 include 语义,但它可以组成来自多个源的属性文件。示例下面将合并两个属性文件,您可以从allprops.properties访问这些文件。当必须在不同的系统或环境中使用不同的属性文件集时,这尤其有用。

<plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>properties-maven-plugin</artifactId>
      <version>${properties-maven-plugin.version}</version>
      <executions>
        <execution>
          <id>read-properties</id>
          <phase>generate-resources</phase>
          <goals>
            <goal>read-project-properties</goal>
          </goals>
          <configuration>
            <files>
              <file>firstPropertiesFile.properties</file>
              <file>secondPropertiesFile.properties</file>
            </files>
          </configuration>
        </execution>
        <execution>
          <id>write-all-properties</id>
          <phase>generate-resources</phase>
          <goals>
            <goal>write-project-properties</goal>
          </goals>
          <configuration>
            <outputFile>${project.build.directory}/allprops.properties</outputFile>
          </configuration>
        </execution>            
      </executions>
    </plugin>
  </plugins>