Платформа доступа. переменные свойств из nbi ant script

#java #netbeans #ant

#java #netbeans #ant

Вопрос:

можно ли получить доступ из муравьиного скрипта nbi (проекта установщика) к переменным, определенным в файле platform.properties, например nbjdk.active , который устанавливается при изменении платформы Java в проекте?

Цель состоит в том, чтобы из муравьиного скрипта выбрать один из упакованных 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:packedjre1.8.0_65_32bitsjre.exe"/>-->
            <property name="nbi.bundled.jvm.file" value="D:packedjre1.8.0_25_64bitsjre.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. Не могли бы вы показать свой текущий сценарий сборки и точную проблему, с которой столкнулись?

2. Любой намек на решение этой проблемы?

3. По крайней мере, я хотел бы, если это возможно достичь, может кто-нибудь указать мне на это?

4. Вы имеете в виду доступ к свойству из внешнего файла свойств? Какую ошибку вы видите?

5. Я не вижу никакой ошибки, я не знаю, как получить доступ к этим переменным в файле platform.properties

Ответ №1:

Вот содержимое файла свойств, к которому будет осуществляться доступ в сценарии сборки:

Приведенный ниже пример сценария сборки показывает, как получить доступ к свойству abc из test.properties файла.

Все, что вам нужно, это загрузить файл свойств перед доступом к нему, как показано в скрипте, используя, конечно, изменить путь к файлу свойств в соответствии с вашей средой.

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

Затем используйте ${abc} везде, где требуется его значение, как показано в echo задаче ниже.

содержимое test.properties

 abc=123
def=234
  

build.xml

 <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>
  

Вывод

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

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

Надеюсь, это полезно.

Комментарии:

1. Спасибо за ответ, но это не входит в сферу вопроса. Вопрос касается проекта NetBeans, возможен ли доступ из скрипта сборки ant к переменным, определенным в файле platform.properties. Если вы видите прикрепленный мной код, я получаю доступ к некоторым переменным среды, но к любым из файла platform.properties.

2. Ответ показывает, как получить доступ к свойству из файла. И nbjdk.active нигде не упоминается в предоставленном вами ant script. Можете ли вы более четко описать проблему? ошибка?

3. В строке <echo>********* JDK in platform.properties: HERE I TRY TO ACCESS VARIABLE</echo> указано, где я хочу получить доступ к этой переменной.

4. Это свойство? затем попробуйте ${platform.properties} . Если это file, сначала вам нужно загрузить файл, как указано в ответе.