#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, сначала вам нужно загрузить файл, как указано в ответе.