从nbi ant脚本访问platform.properties变量

时间:2016-10-10 14:09:44

标签: java netbeans ant

是否可以从nbi(安装程序项目)的ant脚本访问 platform.properties 文件中定义的变量,就像在项目中设置的nbjdk.active一样Java平台发生了变化吗?

目标是从ant脚本中选择一个打包的jre(32或64)作为此变量的函数。

提前致谢。

编辑: 这是我尝试访问这些变量时的构建脚本片段:

<target name="-generate-bundles">
    <for-each property="platform" list="${target.platforms}" separator=" ">

        <condition property="bundle.extention.${platform}" value="exe">
             <contains string="${platform}" substring="windows"/>
        </condition>
        <condition property="bundle.extention.${platform}" value="sh">
             <or>
                 <contains string="${platform}" substring="linux"/>
                 <contains string="${platform}" substring="solaris"/>
             </or>
        </condition>
        <condition property="bundle.extention.${platform}" value="zip">
             <contains string="${platform}" substring="macosx"/>
        </condition>

        <set property="bundle.extention" source="bundle.extention.${platform}"/>

        <create-bundle root="${output.dir}/registry-temp" 
                   platform="${platform}" 
                   target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
            <component uid="${main.product.uid}" version="1.0.0.0.0"/>


            <!-- HERE I WANT TO CHECK THE VARIABLE AND SELECT ONE OF THE PACKED JRE -->
            <!--<property name="nbi.bundled.jvm.file" value="D:\packed\jre1.8.0_65_32bits\jre.exe"/>-->
            <property name="nbi.bundled.jvm.file" value="D:\packed\jre1.8.0_25_64bits\jre.exe"/>

        </create-bundle>

        <echo>************************</echo>
        <echo>********* OS: ${platform}</echo>
        <echo>********* Arch: ${os.arch}</echo>
        <echo>********* JDK in NB: ${jdk.home}</echo> 
        <echo>********* JDK in platform.properties: HERE I TRY TO ACCESS VARIABLE</echo> 
        <echo>************************</echo>


        <if property="bundle.extention" value="zip">
            <antcall target="zip-to-tgz">
                <param name="input.file"  value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
                <param name="output.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.tgz"/>
            </antcall>
        <delete file="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
        </if>
    </for-each>
    <echo>Installer(s) for [${target.platforms}] are available at ${bundles.release.dir}</echo>
</target>

这是platform.properties文件中的变量:

nbjdk.active=JDK_1.8.0_65-32bits

1 个答案:

答案 0 :(得分:0)

以下是将在构建脚本中访问的属性文件内容:

以下构建脚本示例显示了如何访问来自abc文件的属性test.properties

您需要的是在访问属性文件之前加载属性文件,如脚本中所示,当然,根据您的环境更改属性文件路径

<property file="D:/Temp/test.properties"/>

然后在${abc}之前使用echo,如下面的abc=123 def=234 任务所示。

test.properties 内容

<project name="imported" basedir="." default="test">  
  <property file="D:/Temp/test.properties"/>
  <target name="test" description="check if the property can be retrieved from file">
    <echo message="Property abc's value from file is ${abc}"/>
  </target>
</project>

build.xml

test:
     [echo] Property abc's value from file is 123

BUILD SUCCESSFUL
Total time: 0 seconds
[Finished in 4.7s]

<强>输出

#define MY_MACRO 3 --> in A.h
#define MY_MACRO 45 --> B.h

希望这有用。