<!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>
