在加载属性文件之前从属性文件中读取属性名称(ANT)

时间:2017-07-14 07:36:13

标签: ant properties-file

我需要检索所有属性'加载前使用属性文件中的名称(使用Ant)

我将详细解释整个过程:

  1. 读取第一个属性文件(将其命名为a.properties) 所有属性都作为项目属性加载。

    #a.properties's contents
    myvar1=1
    myvar2=someTextHere
    
  2. 必须加载第二个文件(让他们说b.properties) 项目。一些已经设置的属性也可以包含在其中 第二个文件,所以我们要做的就是更新这些变量 在其上找到的值(通过ant-contrib' var目标

    #b.properties's contents
    myvar1=2  #updated value for a property that's is already set on the project
    myvar3=1,2,3,4,5,6
    
  3. 所以预期的子集(从ANT项目的属性角度来看) 属性/价值对将是:

    myvar1=2
    myvar2=someTextHere
    myvar3=1,2,3,4,5,6
    
  4. 我们无法更改在项目中加载这些文件的顺序,这是解决问题的最简单方法(因为Ant在设置属性时采用的行为)

    任何反馈都将受到高度赞赏。

    此致

3 个答案:

答案 0 :(得分:0)

我假设您需要在构建源代码之前读取不同文件中的属性

<target name=-init-const-properties description="read all properties required">
  <propertyfile file="AbsolutePathToPropertyFile" comment="Write meaningfull 
    about the properties">
        <entry value="${myvar1}" key="VAR1"/>
        <entry value="${myvar2}" key="VAR2"/>
  </propertyfile>
</target>

注意:您需要添加适当的AbsolutePathToPropertyFile并在必要时发表评论

在目标-init-const-properties中,您可以添加要读取的文件数,并将此目标用作要在其中使用这些属性值的相关目标。希望这会回答你的问题

答案 1 :(得分:0)

我建议使用名为“build.properties”的构建默认值的标准文件。如果需要覆盖任何设置,请创建名为“build-local.properties”的可选文件。

我的建议是保持构建逻辑简单。在我的经验中,很少需要使用ant-contrib扩展来使属性像变量一样。

实施例

├── build-local.properties
├── build.properties
└── build.xml

运行项目会产生以下输出,其中值为“two”:

$ ant
build:
     [echo] Testing one, dos, three

删除可选文件,它将恢复为默认值:

$ rm build-local.properties
$ ant

build:
     [echo] Testing one, two, three

的build.xml

秘密是加载属性文件的顺序。如果它们不存在,那么它们就不会创建属性。

<project name="demo" default="build">

  <property file="build-local.properties"/>
  <property file="build.properties"/>

  <target name="build">
    <echo message="hello ${myvar1}, ${myvar2}, ${myvar3}"/>
  </target>

</project>

build.properties

myvar1=one
myvar2=two
myvar3=three

build-local.properties

myvar2=dos

答案 2 :(得分:0)

最后,我遵循的方法是从命令行指定第二个属性文件(b.properties):

ant <my_target> -propertyfile b.properties

这对我来说很好......

感谢各位的帮助。