<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">

<html><!-- InstanceBegin template="file:///C|/p4/main/help/ide/en/Templates/Command.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>xmlbean Ant Task</title>
<!-- InstanceEndEditable -->
<!--(Meta)==========================================================-->

<meta http-equiv=Content-Type content="text/html; charset=$CHARSET;">
<!-- InstanceBeginEditable name="metatags" -->
<meta name="component" content="">
<!-- In the description metatag, please provide a BRIEF description of the topic contents. -->
<meta name="description" content="">
<!-- In the component metatag, please list keywords that will help a user search for this topic. -->
<meta name="keywords" content="">
<!-- InstanceEndEditable -->

<!--(Links)=========================================================-->
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
<link href="../xmlbeans.css" rel="stylesheet" type="text/css">
</head>

<!--(Body)==========================================================-->
<body>
<!-- InstanceBeginEditable name="body" -->
<div id=topictitle>
  <H1 class=Title>xmlbean Ant Task</h1>
</div>
<div id=topictext>
  <p>Compiles a set of XSD and/or WSDL files into XMLBeans. This is useful for
    building an XMLBean JAR from XSD and WSDL files. If desired, the task can
    also generate the source code that makes up the XMLBean type system specified
    by the schema files.</p>
  <p class="notepara"><b>Note:</b> This task depends on an external library not
    included in the Ant distribution called xbean.jar. &nbsp;It can be found in
    the XMLBeans developer kit at <a href="http://xml.apache.org/xmlbeans/"
        target="_blank">http://xml.apache.org/xmlbeans/</a>.
    The build script will need to include a taskdef for xmlbean, which could look
    like this:</p>
</div>
<blockquote>
  <div class="notepara">
    <pre class="notepara">&lt;taskdef name="xmlbean" classname="com.bea.xbean.tool.XMLBean" classpath="path/to/xbean.jar"/&gt;</pre>
  </div>
</blockquote>
<div>
<p>It is possible to refine the set of files that are being processed. This
    can be done with the <span class="langinline">includes</span>, <span class="langinline">includesfile</span>,
    <span class="langinline">excludes</span>, <span class="langinline">excludesfile</span>
    and <span class="langinline">defaultexcludes</span> attributes. With the <span class="langinline">includes</span>
    or <span class="langinline">includesfile</span> attribute you specify the
    files you want to have included by using patterns. The <span class="langinline">exclude</span>
    or <span class="langinline">excludesfile</span> attributes are used to specify
    the files you want to have excluded. This is also done with patterns. And
    finally with the <span class="langinline">defaultexcludes</span> attribute,
    you can specify whether you want to use default exclusions or not. See the
    section on <a
 href="http://ant.apache.org/manual/dirtasks.html#directorybasedtasks" target="_blank">directory
    based tasks</a> in the <a href="http://ant.apache.org/manual/" target="_blank">Ant
    documentation</a>, on how the inclusion/exclusion of files works, and how
    to write patterns.</p>
  <p>This task forms an implicit <a
 href="http://ant.apache.org/manual/CoreTypes/fileset.html" target="_blank">FileSet</a>
    and supports all attributes of <code>&lt;fileset&gt;</code> (<code>dir</code>
    becomes <code>basedir</code>) as well as the nested <code>&lt;include&gt;</code>,
    <code>&lt;exclude&gt;</code> and <code>&lt;patternset&gt;</code> elements.</p>
  <h3>Parameters</h3>
  <table border="1" cellpadding="2" cellspacing="0">
    <tbody>
      <tr>
        <td valign="top"><b>Attribute</b></td>
        <td valign="top"><b>Description</b></td>
        <td align="center" valign="top"><b>Required</b></td>
      </tr>
      <tr>
        <td valign="top">schema</td>
        <td valign="top">A file that points to either an individual schema file
          or a directory of files. &nbsp;Not a path reference. &nbsp;If multiple
          schema files need to be built together, use a nested fileset instead
          of setting schema.</td>
        <td align="center" valign="top">Yes, unless a fileset element is nested.</td>
      </tr>
      <tr>
        <td valign="top">destfile</td>
        <td valign="top">Define the name of the jar file created.&nbsp; For instance,
          "myXMLBean.jar" will output the results of this task into a jar with
          the same name.</td>
        <td align="center" valign="top">No, default is "xmltypes.jar".</td>
      </tr>
      <tr>
        <td valign="top">download</td>
        <td valign="top">Set to true to permit the compiler to download URLs for
          imports and includes.&nbsp; Defaults to false, meaning all imports and
          includes must be copied locally.<br> </td>
        <td align="center" valign="top">No, default is false.</td>
      </tr>
      <tr>
        <td valign="top">failonerror</td>
        <td valign="top"> Determines whether or not the ant target will continue
          if the XMLBean creation encounters a build error.<br> </td>
        <td align="center" valign="top">No, default is true.</td>
      </tr>
      <tr>
        <td valign="top">verbose<br> </td>
        <td valign="top">Controls the amount of build message output.<br> </td>
        <td valign="top" align="center">No, default is true.</td>
      </tr>
      <tr>
        <td valign="top">typesystemname<br> </td>
        <td valign="top">The name of the package that the TypeSystemHolder class
          should be generated in.&nbsp; Normally this should be left unspecified.
          None of the XMLBeans are generated in this package. Use .xsdconfig files
          to modify XMLBean package or class names.<br> </td>
        <td valign="top" align="center">No<br> </td>
      </tr>
      <tr>
        <td valign="top">classgendir<br> </td>
        <td valign="top">Set a location to generate CLASS files into.<br> </td>
        <td valign="top" align="center">No<br> </td>
      </tr>
      <tr>
        <td valign="top">srconly<br> </td>
        <td valign="top">A value of true means that only source will be generated.<br>
        </td>
        <td valign="top" align="center">No, default is false.</td>
      </tr>
      <tr>
        <td valign="top">srcgendir<br> </td>
        <td valign="top">Set a location to generate JAVA files into.<br> </td>
        <td valign="top" align="center">No<br> </td>
      </tr>
      <tr>
        <td valign="top">classpath</td>
        <td valign="top">The classpath to use if schemas in the fileset import
          definitions that are supplied by other compiled XMLBeans JAR files,
          or if JAVA files are in the schema fileset. Also supports a nested classpath.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">classpathref</td>
        <td valign="top">Adds a classpath, given as <a
 href="http://ant.apache.org/manual/using.html#references" target="_blank">reference</a>
          to a path defined elsewhere.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">includes</td>
        <td valign="top">Comma- or space-separated list of patterns of files that
          must be included. All files are included when omitted.</td>
        <td valign="top" align="center">No</td>
      </tr>
      <tr>
        <td valign="top">includesfile</td>
        <td valign="top">The name of a file. Each line of this file is taken to
          be an include pattern.</td>
        <td valign="top" align="center">No</td>
      </tr>
      <tr>
        <td valign="top">excludes</td>
        <td valign="top">Comma- or space-separated list of patterns of files that
          must be excluded. No files (except default excludes) are excluded when
          omitted.</td>
        <td valign="top" align="center">No</td>
      </tr>
      <tr>
        <td valign="top">excludesfile</td>
        <td valign="top">The name of a file. Each line of this file is taken to
          be an exclude pattern.</td>
        <td valign="top" align="center">No</td>
      </tr>
      <tr>
        <td valign="top">defaultexcludes</td>
        <td valign="top">Indicates whether default excludes should be used or
          not ("yes"/"no"). Default excludes are used when omitted.</td>
        <td valign="top" align="center">No</td>
      </tr>
      <tr>
        <td valign="top">debug</td>
        <td valign="top">Indicates whether source should be compiled with debug
          information; defaults to <code>off</code>. If set to <code>off</code>,
          <code>-g:none</code> will be passed on the command line for compilers
          that support it (for other compilers, no command line argument will
          be used). If set to <code>true</code>, the value of the <code>debuglevel</code>
          attribute determines the command line argument.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">debuglevel</td>
        <td valign="top">Keyword list to be appended to the <code>-g</code> command-line
          switch. This will be ignored by all implementations except <code>modern</code>
          and <code>classic(ver &gt;= 1.2)</code>. Legal values are <code>none</code>
          or a comma-separated list of the following keywords: <code>lines</code>,
          <code>vars</code>, and <code>source</code>. If <code>debuglevel</code>
          is not specified, by default, nothing will be appended to <code>-g</code>.
          If <code>debug</code> is not turned on, this attribute will be ignored.
        </td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">optimize</td>
        <td valign="top">Indicates whether source should be compiled with optimization;
          defaults to <code>off</code>.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">includeAntRuntime</td>
        <td valign="top">Whether to include the Ant run-time libraries in the
          classpath; defaults to <code>yes</code>.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">includeJavaRuntime</td>
        <td valign="top">Whether to include the default run-time libraries from
          the executing VM in the classpath; defaults to <code>no</code>.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">fork</td>
        <td valign="top">Whether to execute <code>javac</code> using the JDK compiler
          externally; defaults to <code>yes</code>.</td>
        <td align="center" valign="top">No, default is true</td>
      </tr>
      <tr>
        <td valign="top">executable</td>
        <td valign="top">Complete path to the <code>javac</code> executable to
          use in case of <code>fork=&quot;yes&quot;</code>. Defaults to the compiler
          of the Java version that is currently running Ant. Ignored if <code>fork=&quot;no&quot;</code></td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">memoryInitialSize</td>
        <td valign="top">The initial size of the memory for the underlying VM,
          if <code>javac</code> is run externally; ignored otherwise. Defaults
          to the standard VM memory setting. (Examples: <code>83886080</code>,
          <code>81920k</code>, or <code>80m</code>)</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">memoryMaximumSize</td>
        <td valign="top">The maximum size of the memory for the underlying VM,
          if <code>javac</code> is run externally; ignored otherwise. Defaults
          to the standard VM memory setting. (Examples: <code>83886080</code>,
          <code>81920k</code>, or <code>80m</code>)</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">compiler</td>
        <td valign="top">The compiler implementation to use. If this attribute
          is not set, the value of the <code>build.compiler</code> property, if
          set, will be used. Otherwise, the default compiler for the current VM
          will be used.
        <td align="center" valign="top">No</td>
      </tr>
    </tbody>
  </table>
  <h3>Example</h3>
</div>
<div id=topictext> Be sure to define the task in your script, like this:</div>
<div>
  <pre>&lt;taskdef name="xmlbean" classname="com.bea.xbean.tool.XMLBean" classpath="path/to/xbean.jar"</pre>
  <p>The following builds all the schemas in the schemas directory and creates
    a jar called &quot;Schemas.jar&quot;.</p>
</div>
<div>
  <pre>
&lt;xmlbean schema="schemas" destfile="Schemas.jar"/&gt;</pre>
  The following compiles the schema &quot;ourSchema.xsd&quot; into the default
  jar &quot;xmltypes.jar&quot;. &nbsp;If &nbsp;any imports and includes are defined
  by remote URLs, they are downloaded during the build.
  <div>
    <pre>&lt;xmlbean schema="schemas/ourSchema.xsd" download="true"/&gt;</pre>
  </div>
  <div>
    <h4>Using a fileset</h4>
  </div>
  <div>
    <pre>&lt;xmlbean classgendir="${build.dir}" classpath="${class.path}"<br>      failonerror="true"&gt;<br>  &lt;fileset basedir="src" excludes="**/*.xsd"/&gt;<br>  &lt;fileset basedir="schemas" includes="**/*.*"/&gt;<br>&lt;/xmlbean&gt;</pre>
  </div>
  <div> Gathers all the files in the src directory except XSD files, along with
    every file in the schemas directory, and compiles them. The fileset can include
    schema files that refer to previously compiled schema components.&nbsp; The
    fileset can also contain JAVA files.&nbsp; The classpath parameter defines
    the classpath necessary to resolve compiled schema and java references.<br>
    <br>
    The built classes will go into ${build.dir}.</div>
  <div>
    <p class=relatedtopics>Related Topics</p>
    <p>None.</p>
  </div>
</div>
<!-- InstanceEndEditable -->
</body>
<!-- InstanceEnd --></html>
