Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 属性中的嵌套属性(属性中)(ant到maven迁移)_Java_Maven_Ant_Properties - Fatal编程技术网

Java 属性中的嵌套属性(属性中)(ant到maven迁移)

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

我们使用ant构建(一个巨大的)项目,并且(由于遗留的原因)将属性嵌套在属性文件中

(例如在build.xml内部)

(在某些其他属性文件中(有时甚至相同)):

然后,因为ant不再是最近的了,我们现在要搬到maven,这将是一场噩梦

问题是:如何读取属性,这些属性是将属性嵌套在属性中的结果,深度有时高达5级

(作为测试)

过滤器/顶层属性:

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。