jdk/make/netbeans/README
changeset 2 90ce3da70b43
child 4341 2af5eacd4b24
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 Working on OpenJDK using NetBeans
       
     2     This note describes how to work on the OpenJDK from NetBeans. We've
       
     3     provided several NetBeans projects as starting points. Below we'll
       
     4     describe how to use them, as well as how to create your own.
       
     5 
       
     6 Getting Started
       
     7     In addition to the source bundle for Open JDK, you'll need to download
       
     8     and install copies of the JDK and of NetBeans 6. And if you want to run
       
     9     tests on the JDK (you do want to run tests, right?), you'll need to
       
    10     install the jtreg test harness.
       
    11 
       
    12     In this note, when pathnames are not fully specified, they should be
       
    13     interpreted as being relative to the directory containing this README
       
    14     and the NetBeans projects themselves.
       
    15 
       
    16         The JDK build process is largely make-based, and is not
       
    17         exceptionally tolerant of pathnames with spaces in them (such as
       
    18         "Program Files". Please be sure to install everything in a
       
    19         directories whose paths don't have any spaces!
       
    20 
       
    21     Downloading the JDK
       
    22         You've probably done this a million times. Download and install it
       
    23         from http://java.sun.com/javase
       
    24 
       
    25     Downloading the OpenJDK sources
       
    26         Since you're reading this, d you've already downloaded the OpenJDK
       
    27         source bundle.  Later in this document we'll refer to the location
       
    28         where you installed the Open JDK sources as *install-dir*.
       
    29 
       
    30     Downloading a pre-built, JDK 7
       
    31         This will be necessary to do builds of some of the projects.  In
       
    32         general, you want to download and install a pre-built JDK that
       
    33         corresponds to the OpenJDK sources you download.  Building the entire
       
    34         OpenJDK depends on a few parts of the pre-built JDK.  Get this from
       
    35         http://download.java.net/jdk7/binaries
       
    36 
       
    37         Note: For working on certain projects, like JMX and JConsole, you 
       
    38               may find convenient to use a pre-built version of JDK 7 (or 
       
    39               OpenJDK) rather than building your own. This will allow you
       
    40               to build only that part of the OpenJDK sources which correspond
       
    41               to that project. 
       
    42 
       
    43     NetBeans 6
       
    44         Yep, NetBeans *6*. Nope, not FCS'd yet. We're on the edge here,
       
    45         enjoy it! Get the latest working development build of NetBeans 6
       
    46         from http://netbeans.org
       
    47 
       
    48     jtreg
       
    49         "jtreg" is the test harness for running OpenJDK's regression tests.
       
    50         Get it from http://openjdk.java.net/jtreg
       
    51 
       
    52     Ant
       
    53        NetBeans comes with ant, but if you use a separately-installed copy
       
    54        please make sure that it is at least version 1.7.0.
       
    55 
       
    56 Configuring
       
    57     Building OpenJDK is hard and complex. No, strike that. While it's not
       
    58     exactly "easy", we've got it down to *relatively* small set of
       
    59     properties you need to set.
       
    60 
       
    61     The NetBeans projects provided here share a fair amount of common
       
    62     structure. They share properties values where it makes sense. Each
       
    63     project loads properties from these properties files, in this order
       
    64 
       
    65         ${basedir}/nbproject/private/build.properties
       
    66         $HOME/.openjdk/${ant.project.name}-build.properties
       
    67         $HOME/.openjdk/build.properties
       
    68         ${basedir}/build.properties
       
    69 
       
    70     (${basedir} refers to the directory containing a particular NetBeans
       
    71     project.) The first time a property defined determines value: it is
       
    72     *not* overridden if it is read from properties files read later. The net
       
    73     result is that by carefully choosing where to define a property, you can
       
    74     have it for a specific project, all uses of a specific project (useful
       
    75     if you work on multiple copies of the OpenJDK sources), all projects, or
       
    76     only projects in a specific sandbox.
       
    77 
       
    78     With that in mind, please set the following properties. Presuming you
       
    79     want the same values for all your work, set them in
       
    80     $HOME/.openjdk/build.properties.
       
    81 
       
    82     * bootstrap.jdk
       
    83         Set to the location where you installed JDK 7.
       
    84 
       
    85     * jtreg.home
       
    86         Set to the location where you installed jtreg.
       
    87 
       
    88     * make.options
       
    89         Some of the projects invoke "make", since they compile native code.
       
    90         The make.options property is for passing information about what you
       
    91         installed where to make.  Change the paths to fit your particular
       
    92         situation:
       
    93 
       
    94         make.options=\
       
    95             ALT_BOOTDIR=/home/me/bin/jdk1.6.0 \
       
    96             ALT_BINARY_PLUGS_PATH=/home/me/bin/openjdk-binary-plugs \
       
    97             ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.7.0 \
       
    98             OPENJDK=true
       
    99 
       
   100         The trailing '\' are important, so that make gets the above as a
       
   101         single set of options.
       
   102 
       
   103         You might want to add additional additional options: see the README
       
   104         for the project you're using for more information.  And see
       
   105                  *install-dir*/jdk/make/README-builds.html
       
   106         to read much more about building the JDK.
       
   107 
       
   108   Windows-specific configuration
       
   109     First, please note that the entire JDK cannot currently be built on
       
   110     Windows platforms.  This will likely limit your ability to build
       
   111     make-based projects.  See 
       
   112          *install-dir*/jdk/make/README-builds.html
       
   113     for full information on issues with building on the Windows platform.
       
   114 
       
   115     That said, there are two ways to work with the Windows-required settings
       
   116     for the Microsoft tools. Either:
       
   117 
       
   118     * Set environment variables values in Windows
       
   119         Doing so means accessing the System control panel in Windows, and
       
   120         setting the environment variables there.
       
   121 
       
   122         By doing so, you can launch NetBeans by double-clicking its icon,
       
   123         and the environment variable values will be available.
       
   124 
       
   125     * Set environment variable values in a shell
       
   126         Doing so means adding the settings to an init file (e.g. .bashrc,
       
   127         .cshrc, etc.) or a file that you source before running NetBeans. In
       
   128         this case, you'll have to launch NetBeans from the command line in a
       
   129         shell in which you've set the environment variables.
       
   130 
       
   131     In either case, the end result should be that the settings are available
       
   132     to the make-based build process when it runs from within NetBeans.
       
   133 
       
   134     The make-based builds presumes that you're using cygwin, and expects to
       
   135     find "make" in c:\cygwin\bin\make. If you've installed cygwin elsewhere,
       
   136     set "make" in a properties file.
       
   137 
       
   138   Configuring Project Properties
       
   139     A note of caution is in order: These are NetBeans *freeform* projects.
       
   140     If you use the NetBeans GUI to examine them, things are likely to not
       
   141     look "right". Please don't edit them there, please instead use a text
       
   142     editor.
       
   143 
       
   144   Locale Requirements
       
   145     To build the Open JDK sources, be certain that you are using the "C"
       
   146     locale on Unix (R) platforms, or "English (United States)" locale on
       
   147     Windows.
       
   148 
       
   149 Platforms and architectures, oh my!
       
   150     The Open JDK can be built for a variety of operating system platforms
       
   151     and hardware architectures. The resulting builds are always placed in a
       
   152     directory which contains the platform and architecture as part of the
       
   153     pathname, as in *platform*-*arch*. For example, if you build the jdk
       
   154     project on a Linux platform running on x86 hardware, the resulting build
       
   155     will be in:
       
   156 
       
   157     *install-dir*/jdk/build/linux-i586
       
   158 
       
   159     We've provided support for some platforms and architectures in
       
   160     common/architectures. Add another, if your needs require it.
       
   161 
       
   162 Provided NetBeans projects
       
   163     This section describes the NetBeans projects that help you work on
       
   164     particular parts of the JDK. While they're largely similar in structure
       
   165     and should work the way you expect NetBeans projects to work: edit,
       
   166     build, test, etc. But there are some differences. They don't all support
       
   167     the same targets (e.g., there's nothing to run in jarzip project).
       
   168 
       
   169     Some projects are built by invoking make, since they involve compilation
       
   170     of native code or other activities that cannot be done by javac. We call
       
   171     these "make-based", and call all others "ant-based".
       
   172 
       
   173     They all are configured by way of a build.properties file, which
       
   174     specifies what subdirectories of the JDK sources they manipulate, what
       
   175     directories contain their tests, whether they use make or ant, etc.
       
   176 
       
   177     The very first time you open any one of these projects on set of Open
       
   178     JDK sources, NetBeans will scan the entire set of sources, not just
       
   179     those for the project you opened. This will take a few minutes, but will
       
   180     ensure that Go To Type, Go To Source, and so on work as expected. Later,
       
   181     when you open other projects on the same Open JDK sources, there will be
       
   182     at most a slight delay.
       
   183 
       
   184     There's a README accompanying each project. Most are text files, which
       
   185     you can Open in NetBeans, some are HTML files, in which case unless you
       
   186     enjoy reading raw HTML, you're better off choosing the *View* menu item
       
   187     from the context menu, which will display the README in your web
       
   188     browser.
       
   189 
       
   190     Finally, note that these projects were all created by different people,
       
   191     and are while some attempt has been made to make them look and behave
       
   192     the same, they are maintained separately and will vary somewhat.
       
   193 
       
   194     The projects currently provided are:
       
   195 
       
   196     jdk (directory "jdk")
       
   197         A convenient starting point for the other projects, and from which
       
   198         you can build the entire OpenJDK. Please note that depending on your
       
   199         hardware, this could take a *very* long time. The results of the
       
   200         build are in *install-dir*/jdk/build/*platform*-*arch*.
       
   201 
       
   202     world (directory "world")
       
   203         This project builds both the Hotspot VM and all of JavaSE. Please
       
   204         note that pretty much regardless of your hardware, this *will* take
       
   205         a long time, and use *lots* of disk space (more than 3GB). The
       
   206         results of the build are in
       
   207         *install-dir*/control/build/*platform*-*arch* and
       
   208         *install-dir*/control/build/*platform*-*arch*-fastdebug.
       
   209 
       
   210         Consult the project's README file for details.
       
   211 
       
   212     AWT & Java2d (directory "awt2d")
       
   213         For working on AWT and Java2d. Supports running the Font2DTest demo.
       
   214 
       
   215         This is a make-based project: In order to build this project, you
       
   216         should build the jdk project first, since AWT and Java2d include
       
   217         native code.
       
   218 
       
   219     JConsole (directory "jconsole")
       
   220         For working on JConsole. Creates ../dist/lib/jconsole.jar. Supports
       
   221         running and debugging JConsole.
       
   222 
       
   223         This ant-based project does *not* require that you build the jdk
       
   224         project first, provided that you use a pre-built version of JDK 7. 
       
   225 
       
   226     Java (TM) Management Extensions (JMX(TM)) API (directory "jmx")
       
   227         For working on JMX source code. Creates ../dist/lib/jmx.jar.
       
   228 
       
   229         This ant-based project does *not* require that you build the jdk
       
   230         project first, provided that you use a pre-built version of JDK 7. 
       
   231 
       
   232     Jar & Zip (directory "jarzip")
       
   233         For working on jar & zip. It builds the zip library (including
       
   234         native code), the jar library, and the jar tool. Creates an
       
   235         executable jar program in ../build/*platform*-*arch*/bin/jar.
       
   236 
       
   237         This is a make-based project: In order to build this project, you
       
   238         should build the jdk project first, since AWT and Java2d include
       
   239         native code.
       
   240 
       
   241     Swing (directory "swing")
       
   242         For working on Swing. Creates ../dist/lib/swing.jar. Supports
       
   243         running and debugging the SampleTree demo.
       
   244 
       
   245         This ant-based project does *not* require that you build the jdk
       
   246         project first, provided that you use a pre-built version of JDK 7. 
       
   247 
       
   248     In addition, there are projects for building the compiler, javadoc,
       
   249     and related tools, in the OpenJDK langtools component.  These
       
   250     projects are separate from those described here, and have their
       
   251     own set of guidelines and conventions. For more details, see the 
       
   252     README files in make/netbeans in the OpenJDK langtools component.
       
   253 
       
   254 Running Tests
       
   255     We use the jtreg test harness, described more fully at
       
   256     http://openjdk.java.net/jtreg
       
   257 
       
   258     The OpenJDK tests are in the default Java package, are public classes,
       
   259     and have a "static void main(String[] args)" with which they are
       
   260     invoked. Some tests are actually shell scripts, which might compile
       
   261     code, etc. jtreg is quite flexible.
       
   262 
       
   263     To run tests for a project, use *Test Project* from NetBeans. From the
       
   264     command line, you can invoke "ant jtreg" on any individual project's
       
   265     build.xml file.
       
   266 
       
   267     In either NetBeans of on the command line, jtreg prints summary output
       
   268     about the pass/fail nature of each test. An HTML report of the entire
       
   269     test run is
       
   270 
       
   271     ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTreport/report.html
       
   272 
       
   273     In that same JTreport directory are also individual HTML files
       
   274     summarizing the test environment, test passes and failures, etc.
       
   275 
       
   276     More detail on any individual test is under
       
   277 
       
   278     ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork.
       
   279 
       
   280     For example, details about the awt/Modal/SupportedTest/SupportedTest
       
   281     test are under the JTwork directory at the same pathname as the test
       
   282     itself in a ".jtr" file. For example:
       
   283 
       
   284     ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork/awt/Modal/SupportedTest/SupportedTest.jtr
       
   285 
       
   286     Sometimes you will see that running jtreg has resulted in a failure.
       
   287     This does not always mean that a test has an error in it. Jtreg
       
   288     distinguishes between these two cases. There are a number of tests that
       
   289     are "ignored", and not run, and these are reported as failures.
       
   290 
       
   291     You can run a single test by right clicking on it and choosing *Run
       
   292     File* from the context menu. Similarly, you can debug a single test by
       
   293     choosing *Debug File*.
       
   294 
       
   295 Debugging
       
   296     Debugging is enabled by default in ant-based projects, as if
       
   297     "-g:lines,vars,source" were given. You can alter these settings via
       
   298     entries in one of the configuration properties files. For example:
       
   299 
       
   300      javac.debug=false
       
   301      javac.debuglevel=<debug level options>
       
   302 
       
   303     To debug a project or test, use NetBeans in the normal way, with *Debug
       
   304     Project* or *Debug File*. Note that not all projects provide a target
       
   305     that can be debugged, but tests can be debugged.
       
   306 
       
   307 Creating Javadoc
       
   308     You can create Javadoc for any of the projects: just choose *Generate
       
   309     Javadoc for Project* from the NetBeans menu. Your default browser will
       
   310     open up, displaying the just-generated javadoc.
       
   311 
       
   312     Javadoc gets generated into a separate subdirectory for each project.
       
   313     For example, the Jar & Zip project's javadoc gets generated in
       
   314 
       
   315     ../build/*platform*-*arch*/jtreg/*ant-project-name*/javadoc/jarzip
       
   316 
       
   317 Cleaning projects
       
   318     Each project can of course be cleaned. Make-based and ant-based projects
       
   319     differ a little in what exactly gets cleaned. In both cases, all jtreg
       
   320     results and javadoc are removed.
       
   321 
       
   322     In ant-based projects, project-specific files as determined by the
       
   323     project's build.properties file are removed from the classes and gensrc
       
   324     directories that are under ../build/*platform*-*arch*.
       
   325 
       
   326     In make-based projects, "make clean" is run in the same directories as
       
   327     "make all" is run when building the project.
       
   328 
       
   329     Please note that the jdk project is "special" with respect to
       
   330     cleaning: in this case, the entire ../build directory is removed.
       
   331     Similar for the world project.
       
   332 
       
   333 Creating your own NetBeans project
       
   334     The project's we've provided are hopefully a useful starting point, but
       
   335     chances are that you want to work on something else. This section will
       
   336     describe how to select an existing project, and then adapt it to your
       
   337     needs.
       
   338 
       
   339   Considerations
       
   340     The first consideration is whether or not the code in which you're
       
   341     interested needs anything beyond javac and copying of resources to
       
   342     build. If so, then you'll need to create a make-based project. If not,
       
   343     an ant-based project is possible. See the project descriptions above to
       
   344     learn which are make-based, and which are ant-based.
       
   345 
       
   346     The second consideration is to consider the files that you'll need. Each
       
   347     project is defined by 3 files:
       
   348 
       
   349     * build.xml
       
   350         This is the ant build script. For a make-based project, they tend to
       
   351         have a target for "make clean" and another for "make all", each of
       
   352         which invokes "make-run" in the same set of directories. Take a look
       
   353         at jarzip/build.xml for an example.
       
   354 
       
   355         For an ant-based project, there might be nothing, with all the work
       
   356         done via the declaration of properties in the build.properties file.
       
   357         Take a look at jconsole/build.xml for an example, and notice how it
       
   358         overrides the -pre-compile and -post-compile targets that are
       
   359         defined in common/shared.xml (where they are defined to do nothing).
       
   360 
       
   361     * build.properties
       
   362         This file defines the directories (and possibly files) that are
       
   363         included in and excluded from. Basically, a file is considered to be
       
   364         in a project if it is mentioned in the includes list, or is
       
   365         contained under a directory mentioned in that list, *unless* it is
       
   366         explicitly excluded or is contained under a directory that is
       
   367         excluded. Take a look awt2d/build.properties for an example.
       
   368 
       
   369     * nbproject/project.xml
       
   370         This file defines a project for NetBeans for a "freeform" project.
       
   371         Each declares several entity references, which are used later in the
       
   372         project. For an example, see javadoc/nbproject/project.xml, which is
       
   373         an ant-based project. Compare that with
       
   374         jarzip/nbproject/project.xml, which is make-based. Not much
       
   375         difference! That's because while the jarzip project is make-based,
       
   376         it does not have any platform-specifc native code. Contrast that
       
   377         with awt2d/nbproject/project.xml, which does have native code;
       
   378         notice that it uses platform-specific entity references.
       
   379 
       
   380     In summary, we recommend exploring the given projects, and choosing one
       
   381     that most closely suits our needs.
       
   382 
       
   383   Example: A project for working on collections
       
   384     Let's create a project to work with on the collections classes. There's no native
       
   385     code here, so an ant-based project will do. Therefore, the jconsole
       
   386     project is a reasonable project to use as a starting point.
       
   387 
       
   388    Clone the existing project
       
   389     Make a directory for the collections project next to the existing projects:
       
   390 
       
   391         % mkdir -p collections/nbproject
       
   392 
       
   393     Copy files from the jconsole project:
       
   394 
       
   395         % cp jconsole/build.properties collections
       
   396         % cp jconsole/build.xml collections
       
   397         % cp jconsole/nbproject/project.xml collections/nbproject
       
   398 
       
   399    Change the set of files included in the project
       
   400     The collections sources are all under one directory, and we want to include
       
   401     them all. The same is true of the tests. So edit
       
   402     collections/build.properties so that it contains these lines:
       
   403 
       
   404         includes=\
       
   405             java/util/
       
   406         excludes=\
       
   407             java/util/Calendar.java,\
       
   408             java/util/jar/,\
       
   409             java/util/logging/,\
       
   410             java/util/prefs/,\
       
   411             java/util/regex/,\
       
   412             java/util/spi/,\
       
   413             java/util/zip/,\
       
   414             **/*-XLocales.java
       
   415         jtreg.tests=\
       
   416             java/util/**/*Collection/ \
       
   417             java/util/**/*Map/ \
       
   418             java/util/**/*Set/ \
       
   419             java/util/**/*List/
       
   420 
       
   421     Notice the trailing "/" in some of those pathnames: that tells NetBeans to
       
   422     treat the path as a directory and include (or exclude) everything beneath
       
   423     it in the hierarchy.  Note also how we include java/util, but then exclude
       
   424     several directories under that which are not related to collections.
       
   425 
       
   426     The build.xml for collections is about as simple as can be. First, change the
       
   427     name of the project:
       
   428 
       
   429         <project name="collections" default="build" basedir=".">
       
   430 
       
   431     Then remove the -pre-compile target from the build.xml.  Change the
       
   432     -post-compile target to create collections.jar without any manifest, and
       
   433     to only contain the collections-related classes.  The jar task now looks
       
   434     like this:
       
   435 
       
   436         <jar destfile="${dist.dir}/lib/collections.jar">
       
   437             <fileset dir="${classes.dir}">
       
   438                 <include name="java/util/*.class"/>
       
   439                 <exclude name="java/util/Calendar*.class"/>
       
   440             </fileset>
       
   441         </jar>
       
   442 
       
   443     Also, change the clean target to remove collections.jar instead of
       
   444     jconsole.jar.
       
   445 
       
   446     Now edit project.xml file. NetBeans uses an internal name and a
       
   447     user-visible name, both of which should be changed:
       
   448 
       
   449         <name>Collections</name> <!-- Customized -->
       
   450 
       
   451         <property name="name">collections</property> <!-- Customized -->
       
   452 
       
   453     Inside of <ide-actions>, you'll see actions defined for "run" and
       
   454     "debug". The Open JDK sources don't include any interesting Collections
       
   455     demos, but leave these here for now: Chances are you'll find or create
       
   456     some collections app of your own, and want to run and or debug it.
       
   457 
       
   458     Now, open the Collections project in NetBeans. You'll find that it operates
       
   459     just like all the other projects.
       
   460 
       
   461     If/when you want to have this project run a collections demo, change the run
       
   462     target in collections/build.xml to invoke it in whatever manner is appropriate
       
   463     for the app. From NetBeans, you should be able to run and debug the app,
       
   464     including setting breakpoints in collections code.
       
   465 
       
   466 Appendix 1: Customizations
       
   467     There are several ways to customize NetBeans projects. These projects
       
   468     share a common structure, based on common/shared.xml and
       
   469     common/make.xml. Because of that sharing, some mechanisms described
       
   470     below apply to most any project.
       
   471 
       
   472     Several properties can be user-defined (and several should not be
       
   473     user-defined!). There are different properties files read. Some default
       
   474     targets can be overridden.
       
   475 
       
   476   Property files
       
   477     When projects are started, and when when ant runs (whether from NetBeans
       
   478     or the command line), these properties files are loaded in the order
       
   479     shown:
       
   480 
       
   481         ${basedir}/nbproject/private/build.properties
       
   482         $HOME/.openjdk/${ant.project.name}-build.properties
       
   483         $HOME/.openjdk/build.properties
       
   484         ${basedir}/build.properties
       
   485 
       
   486     Recall that with ant, once a property is defined, its value cannot be
       
   487     changed, so it's "first one wins".
       
   488 
       
   489     To set or change a property for all your projects, put the change into
       
   490     $HOME/.openjdk/build.properties. This will affect all projects,
       
   491     regardless of how many copies of the Open JDK sources you have
       
   492     installed.
       
   493 
       
   494     Let's say you have 2 copies of the Open JDK sources installed on your
       
   495     machine. To set or change a property for only the jconsole projects, but
       
   496     for both of them, make the change in
       
   497     $HOME/.openjdk/${ant.project.name}-build.properties. If you wanted to
       
   498     make the change for only one of them, do it in that project's
       
   499     ${basedir}/build.properties or
       
   500     ${basedir}/nbproject/private/build.properties.
       
   501 
       
   502     Note that the ${basedir}/build.properties file is provided as part of
       
   503     the Open JDK sources. If you want to make a change for a particular
       
   504     project, you can do so there. To be sure that you don't ever
       
   505     accidentally check it in to the Open JDK sources, you might prefer to
       
   506     change it in ${basedir}/nbproject/private/build.properties.
       
   507 
       
   508   User-definable Properties
       
   509     You can provide your own definitions for the properties listed below. We
       
   510     don't recommend overriding the definitions of other properties.
       
   511 
       
   512     The following two properties should be set before you try to use the
       
   513     projects with NetBeans or ant:
       
   514 
       
   515     * bootstrap.jdk
       
   516         Default: None. Please set this, normally in
       
   517         $HOME/.openjdk/build.properties.
       
   518 
       
   519     * jtreg.home
       
   520         Default: None. Please set this, normally in
       
   521         $HOME/.openjdk/build.properties.
       
   522 
       
   523     These options are for configuring the behavior of make:
       
   524 
       
   525     * use.make
       
   526         Default: Not set. Set this, normally in ${basedir}/build.properties,
       
   527         for a project which is make-based.
       
   528 
       
   529     * make
       
   530         Default: The right make for the platform, at the normal location, set
       
   531         in *install-dir*/jdk/make/netbeans/common/make.xml
       
   532 
       
   533     * make.options
       
   534         Default: Empty string. Set this to any options you want to pass to
       
   535         make, normally in ${basedir}/build.properties.
       
   536 
       
   537     The remaining options are for use at your discretion:
       
   538 
       
   539     * javac.options
       
   540         Default: -Xlint
       
   541 
       
   542     * javac.debug
       
   543         Default: true
       
   544 
       
   545     * javac.debuglevel
       
   546         Default: lines,vars,source
       
   547 
       
   548     * javadoc.options
       
   549         Default: Empty string.  Some projects will need to set this to
       
   550         increase the heap for running javadoc.  For example, see the jconsole
       
   551         project.
       
   552 
       
   553     * javadoc.packagenames
       
   554         Default: "none".  Set this only if your project has packages that
       
   555         should be javadoc'd which are outside of those listed in the javadoc
       
   556         target's packageset.  See the jconsole project for an example.
       
   557 
       
   558     * jtreg.tests
       
   559         Default: None. Set this to a list of tests and/or directories
       
   560         containing regression tests, normally in
       
   561         ${basedir}/build.properties.
       
   562 
       
   563     * jtreg.options
       
   564         Default: Empty string. See http://openjdk.java.net/jtreg
       
   565 
       
   566     * jtreg.vm.options
       
   567         Default: Empty string. See http://openjdk.java.net/jtreg
       
   568 
       
   569     * jtreg.samevm
       
   570         Default: false. See http://openjdk.java.net/jtreg
       
   571 
       
   572   User-overridable Targets
       
   573     The following targets are provided for your convenience in customizing
       
   574     various standard actions of the build process. The default action for
       
   575     each one is to do nothing.
       
   576 
       
   577     These come in pairs, allowing your scripts to take some action before or
       
   578     after a standard action.
       
   579 
       
   580     * -pre-init
       
   581         Runs before any other initialization has been done.
       
   582 
       
   583     * -post-init
       
   584         Runs before after all other initialization has been done.
       
   585 
       
   586     * -pre-compile
       
   587         Runs before compilation, whether via ant or make. Note that in the
       
   588         case of make, it is before the -build-make target has run, not after
       
   589         each individual make-run has run.
       
   590 
       
   591     * -post-compile
       
   592         Runs after compilation, whether via ant or make.
       
   593 
       
   594     * -pre-jtreg
       
   595         Runs before regression tests are run.
       
   596 
       
   597     * -post-jtreg
       
   598         Runs before after regression tests are run.
       
   599 
       
   600     In a make-based project, you should override these targets to do the
       
   601     build and clean actions required of your project.
       
   602 
       
   603     * -build-make
       
   604     * -clean-make
       
   605 
       
   606 Known Issues
       
   607   Tests won't run: waiting for lock
       
   608     Occasionally when running tests, there will be a delay, followed by a
       
   609     message like this:
       
   610         Waiting to lock test result cache for
       
   611            /tmp/jdk/build/linux-i586/jtreg/jconsole/JTwork for 20 seconds
       
   612     The workaround is to stop the tests, rm -rf the offending jtreg/<project>
       
   613     directory by hand, and re-run the tests.
       
   614 
       
   615   Can't run nor debug a single test in the JConsole test
       
   616     In most projects, you can run a single test by opening it in the editor,
       
   617     and choosing Run File from the context menu.  If you try this with the a
       
   618     JConsole test, instead you'll see that *all* tests from *all* projects
       
   619     are run.  The workaround is to not try to run a single JConsole test.
       
   620     Debugging is similarly problematic (both running and debugging use the
       
   621     same underlying infrastructure).
       
   622 
       
   623     If you do Run File a JConsole tests, you can always stop them by pressing
       
   624     the stop button in the NetBeans output window.  But you'll be surprised to
       
   625     learn that they are actually still running in the background.  The only
       
   626     way out of this situation is to exit NetBeans.  A few more tests will run,
       
   627     but after restarting NetBeans things will be OK.
       
   628 
       
   629 Attribution
       
   630     UNIX is a registered trademark in the United States and other countries,
       
   631     exclusively licensed through X/Open Company, Ltd.
       
   632