所有
我有一个NetBeans平台项目(不只是我在NetBeans中编写的项目,但使用rich client framework provided by NetBeans)。我可以通过ant run
命令运行项目。现在,我想通过ant
传递一个可以通过System.getProperty
方法访问的论点。
我知道我需要使用<sysproperty>
节点将键/值对实际注入到运行时环境中,但对于我的生活,我无法弄清楚如何使这个与复杂的构建一起工作NetBeans为您创建的树(build.xml依赖于build-impl.xml,而后者依赖于$ {harness.dir} /suite.xml,而后者依赖于$ {harness.dir} /run.xml)
我找到的simplest example是
<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平台项目中的正确方法是什么?
答案 0 :(得分:0)
在您的RCP应用分发版中有一个文件夹等,在该文件夹中有文件 yourapp.conf 我认为您找到了答案。例如,来自我的一个NB RCP应用程序:
# ${HOME} will be replaced by user home directory according to platform
default_userdir="${HOME}/.${APPNAME}/dev"
default_mac_userdir="${HOME}/Library/Application Support/${APPNAME}/dev"
# options used by the launcher by default, can be overridden by explicit
# command line switches
default_options="--laf Metal --branding xmled -J-Xms24m -J-Xmx64m"
# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea
# default location of JDK/JRE, can be overridden by using --jdkhome <dir> switch
#jdkhome="/path/to/jdk"
# clusters' paths separated by path.separator (semicolon on Windows, colon on Unices)
#extra_clusters=