All
У меня есть проект платформы NetBeans ( не , просто проект, который я написал в NetBeans, но один, использующий инфраструктуру расширенного клиента , предоставленную NetBeans ). Я могу запустить проект с помощью команды ant run
. Теперь я хочу передать аргумент, который будет проходить через ant
, чтобы быть доступным через метод System.getProperty
.
Я понимаю, что мне нужно использовать узел <sysproperty>
для фактического ввода пары ключ / значение в среду времени выполнения, но я не могу понять, как заставить это работать с извилистым деревом сборки, которое NetBeans создает для вас (build.xml зависит от build-impl.xml, который, в свою очередь, зависит от $ {harness.dir} /suite.xml, который, в свою очередь, зависит от $ {harness.dir} /run.xml)
Самый простой пример 1016 * Я нашел
<target name="run" depends="compile">
<java classname="prop"
fork="true">
<sysproperty key="test.property"
value="blue"
/>
</java>
</target>
но проблема в том, что ни один из моих xml-файлов не имеет такого легкодоступного узла <java>
, как этот. Я думаю, что мне удалось проследить поток выполнения к тому, где что-то фактически вызывается (в ${harness.dir}/run.xml
)
<target name="run" depends="-prepare-as-app,-prepare-as-platform">
<touch file="${cluster}/.lastModified"/> <!-- #138427 -->
<property name="run.args" value=""/>
<property name="run.args.ide" value=""/>
<property name="run.args.extra" value=""/>
<condition property="run.args.mac" value="-J-Xdock:name=${app.name}" else="">
<os family="mac"/>
</condition>
<exec osfamily="windows" executable="${run.exe}" failonerror="no" resultproperty="result.prop">
<arg value="--jdkhome"/>
<arg file="${run.jdkhome}"/>
<arg line="${run.args.common}"/>
<arg line="${run.args.prepared}"/>
<arg line="${run.args}"/>
<arg line="${run.args.ide}"/>
<arg line="${run.args.extra}"/>
</exec>
<exec osfamily="unix" dir="." executable="sh"
failonerror="no" resultproperty="result.prop">
<arg value="${run.sh}"/>
<arg value="--jdkhome"/>
<arg file="${run.jdkhome}"/>
<arg line="${run.args.common}"/>
<arg line="${run.args.prepared}"/>
<arg line="${run.args}"/>
<arg line="${run.args.ide}"/>
<arg line="${run.args.extra}"/>
<arg line="${run.args.mac}"/>
</exec>
<fail>
The application is already running within the test user directory.
You must shut it down before trying to run it again.
<condition>
<and>
<isset property="result.prop" />
<or>
<!-- unknown option exit code as returned from IDE by org.netbeans.api.sendopts.CommandLine -->
<equals arg1="${result.prop}" arg2="50346" />
<!-- unknown option exit code as returned from platform app by org.netbeans.CLIHandler -->
<equals arg1="${result.prop}" arg2="2" />
</or>
</and>
</condition>
</fail>
</target>
Как вы видите, под <java>
нет узла, в который я могу поместить свой собственный sysproperty. Кроме того, кажется, что очень неправильно делать то, что нужно обшаривать XML-файлы, чтобы внедрить свойство, которое влияет только на один из моих проектов, а не на все. Итак, как правильно обеспечить, чтобы свойство командной строки, которое я передаю ant run, попало в проект платформы NetBeans?