| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <project name="run" basedir="."> |
| |
| <target name="-init"> |
| <property name="run.jdkhome" location="${nbjdk.home}"/> |
| <condition property="test.user.dir" value="${suite.build.dir}/testuserdir" else="${build.dir}/testuserdir"> |
| <isset property="suite.build.dir"/> |
| </condition> |
| <property name="suite.dir" location="${basedir}"/> |
| <property name="run.args.common" value='--userdir "${test.user.dir}" -J-Dnetbeans.logger.console=true -J-ea'/> |
| <!-- In case run from a suite module, to get app.name and/or branding.token: --> |
| <property file="${suite.dir}/nbproject/private/platform-private.properties"/> |
| <property file="${suite.dir}/nbproject/platform.properties"/> |
| <property file="${suite.dir}/nbproject/private/private.properties"/> |
| <property file="${suite.dir}/nbproject/project.properties"/> |
| <!-- CP with id="cluster.path.id" is expected to be passed as parameter to run.xml --> |
| <pathconvert property="install"> |
| <path refid="cluster.path.id"/> |
| <regexpmapper from="(.*[/\\])platform[0-9]*$$" to="\1"/> |
| </pathconvert> |
| |
| <!-- clear modulename_hidden files from external clusters so they do not influence the availability of |
| modules selected by the current cluster --> |
| <!-- We'll clear only clusters under 'build' folder to avoid deleting |
| files in binary platform/clusters (e.g. user hacks), while |
| un-hiding modules hidden by depended-upon suites. Cf. issue #172727 --> |
| <pathconvert property="cluster.path.projects" refid="cluster.path.id"> |
| <regexpmapper handledirsep="true" from="^.*/build/[^/]+$$" to="\0"/> |
| </pathconvert> |
| <delete> |
| <pathfileset include="config/Modules/*_hidden"> |
| <path path="${cluster.path.projects}"/> |
| </pathfileset> |
| </delete> |
| |
| <!-- architecture of jvm on which app will run --> |
| <condition property="jvm.arch.string" value="" else="64"> |
| <or> |
| <available file="${run.jdkhome}\bin\javaaccessbridge-32.dll" /> <!-- 32-bit Java 9+ --> |
| <available file="${run.jdkhome}\jre\bin\JavaAccessBridge-32.dll" /> <!-- 32-bit Java 8 --> |
| </or> |
| </condition> |
| |
| <!-- use nb.exe if exists (old platform), netbeans.exe otherwise --> |
| <condition property="run.app.exe" value="bin\nb.exe" else="bin\netbeans${jvm.arch.string}.exe"> |
| <available file="${install}\bin\nb.exe"/> |
| </condition> |
| <property name="run.app.sh" value="bin/netbeans"/> |
| <property name="run.exe.candidate" location="${install}\${run.app.exe}"/> |
| <property name="run.sh.candidate" location="${install}/${run.app.sh}"/> |
| <!-- #63976: if disabling things, better to treat as a platform-based app --> |
| <condition property="app.name" value="test"> |
| <or> |
| <and> |
| <isset property="disabled.modules"/> |
| <length string="${disabled.modules}" when="greater" length="0"/> |
| </and> |
| <and> |
| <isset property="enabled.clusters"/> |
| <length string="${enabled.clusters}" when="greater" length="0"/> |
| </and> |
| <and> |
| <isset property="disabled.clusters"/> |
| <length string="${disabled.clusters}" when="greater" length="0"/> |
| </and> |
| <!-- #66793: also treat as a platform-based app if using platform and have no branding --> |
| <not> |
| <or> |
| <available file="${run.exe.candidate}"/> |
| <available file="${run.sh.candidate}"/> |
| </or> |
| </not> |
| </or> |
| </condition> |
| </target> |
| |
| <target name="-prepare-as-app" depends="-init" unless="app.name"> |
| <property name="run.exe" location="${run.exe.candidate}"/> |
| <property name="run.sh" location="${run.sh.candidate}"/> |
| <mkdir dir="${test.user.dir}/etc"/> |
| <pathconvert property="run.extra.clusters"> |
| <path> |
| <pathelement location="${cluster}"/> |
| <path refid="cluster.path.id"/> |
| </path> |
| <!-- Exclude all clusters located in NB install dir; |
| not exactly what netbeans.clusters specify, but good enough --> |
| <filtermapper> |
| <linecontains negate="true"> |
| <contains value="${install}"/> |
| </linecontains> |
| </filtermapper> |
| </pathconvert> |
| <echo file="${test.user.dir}/etc/netbeans.conf">netbeans_extraclusters="${run.extra.clusters}"</echo> |
| <property name="run.args.prepared" value=''/> |
| </target> |
| |
| <target name="-prepare-as-platform" depends="-init" if="app.name"> |
| <property name="disabled.modules" value=""/> |
| <fail message="Platform cluster is not present in cluster.path: '${cluster.path.final}'"> |
| <condition> |
| <not> |
| <matches string="${cluster.path.final}" pattern="[\\/]platform[0-9]*([;:]|$)"/> |
| </not> |
| </condition> |
| </fail> |
| <pathconvert property="run.platform.clusters"> |
| <path> |
| <pathelement location="${cluster}"/> |
| <!-- Does not exclude clusters in which all modules are excluded, shouldn't be a problem --> |
| <path refid="cluster.path.id"/> |
| </path> |
| </pathconvert> |
| <pathconvert property="run.exe"> |
| <path> |
| <fileset dir="${install}" includes="platform*/lib/nbexec${jvm.arch.string}.exe"/> |
| </path> |
| </pathconvert> |
| <pathconvert property="run.sh"> |
| <path> |
| <fileset dir="${install}" includes="platform*/lib/nbexec"/> |
| </path> |
| </pathconvert> |
| <property name="branding.token" value="-"/> <!-- fallback value if not set --> |
| <property name="run.args.prepared" value='--branding ${branding.token} --clusters "${run.platform.clusters}"'/> |
| </target> |
| |
| <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"> |
| <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.extra}"/> |
| <arg line="${run.args.ide}"/> |
| </exec> |
| <exec osfamily="unix" dir="." executable="sh" failonerror="no"> |
| <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.extra}"/> |
| <arg line="${run.args.mac}"/> |
| <arg line="${run.args.ide}"/> |
| </exec> |
| </target> |
| |
| |
| <target name="debug"> |
| <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail> |
| <nbjpdastart name="NetBeans" addressproperty="debug.port" transport="dt_socket"> |
| <classpath> |
| <pathfileset include="**/*.jar"> |
| <path refid="cluster.path.id"/> |
| </pathfileset> |
| <fileset dir="${cluster}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </classpath> |
| </nbjpdastart> |
| <property name="debug.pause" value="y"/> |
| <property name="debug.args" value="-J-agentlib:jdwp=transport=dt_socket,suspend=${debug.pause},server=n,address=${debug.port}"/> |
| <antcall target="run"> |
| <param name="run.args" value="${debug.args}"/> |
| <reference refid="cluster.path.id"/> |
| </antcall> |
| </target> |
| |
| <target name="-profile-check" if="netbeans.home"> |
| <condition property="profiler.configured"> |
| <or> |
| <contains string="${run.args.ide}" substring="-agentpath:" casesensitive="true"/> |
| <contains string="${run.args.ide}" substring="-javaagent:" casesensitive="true"/> |
| </or> |
| </condition> |
| </target> |
| |
| <target name="profile" depends="-profile-check,-profile-pre72" if="profiler.configured" unless="profiler.info.jvmargs.agent" description="Profile a project in the IDE."> |
| <startprofiler/> |
| <antcall target="run"> |
| <reference refid="cluster.path.id"/> |
| </antcall> |
| </target> |
| |
| <target name="-profile-pre72" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent"> |
| <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail> |
| <nbprofiledirect |
| jvmargsprefix="-J" |
| jvmargsproperty="profiler.jvmargs" |
| mainclass="org.netbeans.Main" |
| > |
| <classpath> |
| <pathfileset include="**/*.jar"> |
| <path refid="cluster.path.id"/> |
| </pathfileset> |
| <fileset dir="${cluster}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </classpath> |
| <rootspath> |
| <fileset dir="${cluster}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </rootspath> |
| </nbprofiledirect> |
| |
| <antcall target="run"> |
| <param name="run.args" value='"${profiler.jvmargs}"'/> |
| <reference refid="cluster.path.id"/> |
| </antcall> |
| </target> |
| </project> |