Java 属性中的嵌套属性(属性中)(ant到maven迁移)
我们使用ant构建(一个巨大的)项目,并且(由于遗留的原因)将属性嵌套在属性文件中 (例如在build.xml内部) (在某些其他属性文件中(有时甚至相同)): 然后,因为ant不再是最近的了,我们现在要搬到maven,这将是一场噩梦 问题是:如何读取属性,这些属性是将属性嵌套在属性中的结果,深度有时高达5级 (作为测试) 过滤器/顶层属性:Java 属性中的嵌套属性(属性中)(ant到maven迁移),java,maven,ant,properties,Java,Maven,Ant,Properties,我们使用ant构建(一个巨大的)项目,并且(由于遗留的原因)将属性嵌套在属性文件中 (例如在build.xml内部) (在某些其他属性文件中(有时甚至相同)): 然后,因为ant不再是最近的了,我们现在要搬到maven,这将是一场噩梦 问题是:如何读取属性,这些属性是将属性嵌套在属性中的结果,深度有时高达5级 (作为测试) 过滤器/顶层属性: env=test specific=spec specific=spock 过滤器/测试/中级属性: env=test specific=spec
env=test
specific=spec
specific=spock
过滤器/测试/中级属性:
env=test
specific=spec
specific=spock
过滤器/top_level.properties也可以读取(对于其他环境):
因此,过滤器/prod/mid_level.properties:
env=test
specific=spec
specific=spock
问题归结为:
如何读取/使用在另一个属性文件中定义了路径的属性文件中定义的“特定”属性?)
(这种巢穴到处都是?)
此外,这与“资源”无关(这些也有关系,但不是主要问题,资源是应用程序使用的属性,我所说的属性是仅在生成时用于指定生成方式的属性)
我找到了一个答案,但如果有更好的答案,我很乐意选择它作为最佳答案
S.在maven中,您拥有该插件
如果这样使用,嵌套属性将不会插入到下一个属性中:
(maven仍然会抱怨找不到“filters/${env}/mid_level.properties”属性文件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>execution1</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>filters/top_level.properties</file>
<file>filters/${env}/mid_level.properties</file>
</files>
</configuration>
</execution>
</plugin>
</plugins>
</build>
问题已解决:)
你“只是”需要有尽可能多的属性执行,就像嵌套深度+重构属性以使它们处于分层状态一样,但从这一点来看,这个问题“很容易”解决了…你的属性看起来像是针对不同环境的设置,无论是在Ant中还是在Maven中使用属性都不是一个好主意……也许你可以看看这里:我假设您每次都为每个属性构建,这意味着对dev、prod等来说都是如此。这在Maven中不起作用……只需构建一次,并在一次运行中生成所有需要的输出……嘿,谢谢,我一定会看看它,S。