| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html lang="en"> |
| <head> |
| <meta name="copyright" |
| content="Copyright (c) IBM Corporation and others 2010, 2012. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."> |
| <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <link rel="STYLESHEET" href="../guide/book.css" type="text/css"> |
| <title>Specifying Compiler Options</title> |
| </head> |
| <body> |
| <h1>Compiler options</h1> |
| <p>PDE/Build supports a number of options to control the compiler for individual plug-ins. For settings related to |
| source and target levels and bootclasspath, see <a href="pde_compilation_env.htm">"Setting the Compilation Environment"</a>. |
| </p> |
| |
| <h2>Warnings and Errors</h2> |
| <p>PDE/Build allows specifying custom compile warnings and errors in the build.properties file. These can be set on a per library basis (a single plug-in can |
| contain multiple jar libraries) with the <b>javacWarnings.<library></b> and <b>javacErrors.<library></b> options. The values for these properties |
| are given in the "-warn:..." section on the <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/tasks/task-using_batch_compiler.htm#warn">using the batch compiler</a> page (from the Java development user guide).</p> |
| |
| Example: |
| <pre> javacErrors.. = forbidden,discouraged, |
| javacWarnings.library.jar = deprecation,nullDereference |
| </pre> |
| |
| <h3>Warnings and Errors from Project preferences</h3> |
| The JDT project preferences can now also be used during PDE/Build. PDE/Build itself is not able to read the preference files, but it is able to pass them |
| to the JDT compiler which does understand them. |
| |
| To use this, a plug-in should specify the <b>javacProjectSettings</b> property in its build.properties file. The value should be: |
| <ul> |
| <li><tt><b>javacProjectSettings=true</b></tt> : Use the project setting specified in the default <tt>.settings/org.eclipse.jdt.core.prefs</tt> preferences file.</li> |
| <li><tt><b>javacProjectSettings=path/to/jdt.prefs</b></tt> : Use the specified preference file.</li> |
| </ul> |
| Some projects may wish to use different warning and error settings in the workspace as compared to a releng build. This allows a more convenient method |
| of specifying these settings compared to the "javacWarnings.<library>" property. |
| |
| <h2>File Encoding</h2> |
| PDE/Build can accept custom file encodings on a per library, folder or file basis. |
| <ul> |
| <li><span style="font-weight: bold;">javacDefaultEncoding.<library></span> |
| - sets default encoding to use when compiling the given library.</li> |
| <li><span style="font-weight: bold;">javacCustomEncodings.<library></span> |
| - a comma separated list of |
| paths and encodings to use when compiling the given library. When specifying a folder, the encoding is used for everything contained in that folder. When |
| specifying a file, the encoding is used for just that file. |
| Example: <br> |
| <div style="text-align: center;"> |
| <pre>javacCustomEncodings.library.jar = src/org/foo[US-ASCII], src/org/foo/bar.java[ISO-8859-1]</pre> |
| </div> |
| </li> |
| </ul> |
| <h2>Custom Compiler Arguments</h2> |
| Custom compiler arguments can now be specified per bundle using the <b>compilerArg</b> property in the bundle's build.properties file. This property is similar |
| to the <a href="../reference/pde_builder_config.htm">compilerArg</a> property in the builder configuration except that it affects only the single plug-in instead |
| of all plug-ins. The specific arguments here depend on the compiler being used. The JDT compiler arguments are listed <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/tasks/task-using_batch_compiler.htm">here</a>. |
| |
| <h2>Compiler Option Precedence</h2> |
| There are a number of difference ways to specify different compiler options. As a general rule, option precedence is as follows: |
| <ul> |
| <li>javacDefaultEncoding.<library> has precedence over a custom <b>-encoding</b> command line option.</li> |
| <li>For general options, an option appearing later on the compiler command line overrides options specified earlier. The options are provided to the JDT in the following order: |
| <ol> |
| <li>The <b>compilerArg</b> property from the builder configuration. (Affects all bundles).</li> |
| <li>The <b>compilerArg</b> property from this plug-in's build.properties. </li> |
| <li>The compiler preferences file specified with <b>javacProjectSettings</b>.</li> |
| <li>The generated compiler arguments file (javaCompiler.<library>.args) containing file encodings, <b>javacWarnings</b>, <b>javacErrors</b> and access rules.</li> |
| </ol> |
| </li> |
| </ul> |
| |
| <h2>Using a Custom Compiler</h2> |
| A bundle can now use a custom compiler by setting the <b>compilerAdapter</b> property. The specified compiler adapter must be available in the ant environment. The JDT compiler |
| adapter used by default is <b>org.eclipse.jdt.core.JDTCompilerAdapter</b>. One particular reason for specifying an alternate compiler is for Aspect J or Groovy bundles. Bundles specifying |
| a custom compiler adapter may need to also specify some of the following properties: |
| <ul> |
| <li><b>sourceFileExtensions</b> : A list of extensions that should be considered source. (eg *.java, *.aj, *.groovy).</li> |
| <li><b>compilerAdapter.useLog</b> : whether or not to pass "-log" argument to the compiler</li> |
| <li><b>compilerAdapter.useArgFile</b> : whether or not to pass the generated javaCompiler.<library>.args argument file. (Contains access rules, file encodings and warning/error levels).</li> |
| </ul> |
| </body> |
| </html> |