<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-06-05
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20180605" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho Document Bundle Plugin &#x2013; tycho-document-bundle:javadoc</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Tycho Document Bundle Plugin</h2>
                </div>
                      </div>
        <div class="pull-right">  </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2018-06-05</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.2.0</li>
                      
                
                    
      
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Tycho Extras</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin">
          <i class="none"></i>
        P2 Extras Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin">
          <i class="none"></i>
        Target Platform Validation Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin">
          <i class="none"></i>
        Eclipserun Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin">
          <i class="none"></i>
        Document Bundle Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin">
          <i class="none"></i>
        Source Feature Generation Plugin</a>
            </li>
                                                                                
      <li>
    
                          <a href="../tycho-pack200/index.html" title="Pack200 Plugins">
          <i class="icon-chevron-down"></i>
        Pack200 Plugins</a>
                    <ul class="nav nav-list">
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin">
          <i class="none"></i>
        Normalization Plugin</a>
            </li>
                      
      <li>
    
                          <a href="../tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin">
          <i class="none"></i>
        Pack Plugin</a>
            </li>
              </ul>
        </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            
  
    <div class="section">
<h2><a name="tycho-document-bundle:javadoc"></a>tycho-document-bundle:javadoc</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho.extras:tycho-document-bundle-plugin:1.2.0:javadoc</p>
      
<p><b>Description</b>:</p>
      
<div>Create the javadoc based API reference for this bundle <br />
This mojo creates the javadoc documentation by calling the javadoc
application from the command line. In addition it creates a ready
to include toc-xml file for the Eclipse Help system. <br />
The sources for creating the javadoc are generated automatically
based on the dependency that this project has. As dependency you
can specify any other maven project, for example the feature
project that references you other bundles. Included features will
be added to the list.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Requires dependency resolution of artifacts in scope: <tt>compile+runtime</tt>.</li>
        
<li>Since version: <tt>0.20.0</tt>.</li>
        
<li>Binds by default to the <a class="externalLink" href="http://maven.apache.org/ref/current/maven-core/lifecycles.html">lifecycle phase</a>: <tt>process-classes</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Required_Parameters"></a>Required Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><b><a href="#buildDirectory">buildDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>The build directory where temporary build files will be placed<br /><b>User property is</b>: <tt>project.build.directory</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#outputDirectory">outputDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>The directory where the javadoc content will be generated<br /><b>Default value is</b>: <tt>${project.build.directory}/reference/api</tt>.<br /><b>User property is</b>: <tt>outputDirectory</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><b><a href="#cleanFirst">cleanFirst</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>An option to clean out the whole outputDirectory first.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>cleanFirst</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#javadocOptions">javadocOptions</a></b></td>
            
<td><tt>JavadocOptions</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>Options for calling the javadoc application. Possible options are
(all options are optional): 

<ul>

<li><tt>ignoreError</tt>, specifies if errors calling javadoc
should be ignored</li>

<li><tt>doclet</tt>, used as javadoc <tt>-doclet</tt>
parameter</li>

<li><tt>docletArtifacts</tt>, dependencies will be resovled and
added as <tt>-docletpath</tt> parameter</li>

<li><tt>encoding</tt>, used as javadoc <tt>-encoding</tt> parameter
(default: <tt>${project.build.sourceEncoding}</tt></li>

<li><tt>additionalArguments</tt>, a list of additional arguments
passed to javadoc</li>

<li><tt>includes</tt>/<tt>excludes</tt>, the list of names of
packages to be included in or excluded from JavaDoc processing; use
'<tt>*</tt>' character as wildcard</li>
</ul>
Example configuration: 

<div>
<pre>
&lt;configuration&gt;
   &lt;javadocOptions&gt;
      &lt;ignoreError&gt;false&lt;/ignoreError&gt;
      &lt;encoding&gt;UTF-8&lt;/encoding&gt;
      &lt;doclet&gt;foo.bar.MyDoclet&lt;/doclet&gt;
      &lt;docletArtifacts&gt;
         &lt;docletArtifact&gt;
            &lt;groupId&gt;foo.bar&lt;/groupId&gt;
            &lt;artifactId&gt;foo.bar.mydocletartifact&lt;/artifactId&gt;
            &lt;version&gt;1.0&lt;/version&gt;
         &lt;/docletArtifact&gt;
      &lt;/docletArtifacts&gt;
      &lt;includes&gt;
         &lt;include&gt;com.example.*&lt;/include&gt;
      &lt;/includes&gt;
      &lt;excludes&gt;
         &lt;exclude&gt;com.example.internal.*&lt;/exclude&gt;
      &lt;/excludes&gt;   
      &lt;additionalArguments&gt;
         &lt;additionalArgument&gt;-windowtitle &quot;The Window Title&quot;&lt;/additionalArgument&gt;
         &lt;additionalArgument&gt;-nosince&lt;/additionalArgument&gt;
      &lt;/additionalArguments&gt;
   &lt;/javadocOptions&gt;
&lt;/configuration&gt;
</pre></div><br /><b>User property is</b>: <tt>javadocOptions</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#scopes">scopes</a></b></td>
            
<td><tt>Set</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>The scopes that the dependencies must have in order to be included<br /><b>Default value is</b>: <tt>compile,provided</tt>.<br /><b>User property is</b>: <tt>scopes</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#skipTocGen">skipTocGen</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>Set this property to true to skip the generation of the Eclipse TOC
files.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>skipTocGen</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#sourceTypes">sourceTypes</a></b></td>
            
<td><tt>Set</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>Maven module types that will be used to include the source<br /><b>Default value is</b>: <tt>eclipse-plugin</tt>.<br /><b>User property is</b>: <tt>sourceTypes</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#tocFile">tocFile</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>The output location of the toc file.<br />
This file will be overwritten.<br /><b>Default value is</b>: <tt>${project.build.directory}/tocjavadoc.xml</tt>.<br /><b>User property is</b>: <tt>tocFile</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#tocOptions">tocOptions</a></b></td>
            
<td><tt>TocOptions</tt></td>
            
<td><tt>0.20.0</tt></td>
            
<td>Options for creating the toc files. 

<ul>

<li><tt>mainLabel</tt>, specifies the main label of the toc file
(default: &quot;API Reference&quot;)</li>

<li><tt>mainFilename</tt>, specifies the filename of the TOC file
(default: &quot;overview-summary.html&quot;)</li>
</ul>
Example configuration: 

<div>
<pre>
&lt;configuration&gt;
   &lt;tocOptions&gt;
      &lt;mainLabel&gt;My own label&lt;/mainLabel&gt;
      &lt;mainFilename&gt;myOverviewSummary.html&lt;/mainFilename&gt;
   &lt;/tocOptions&gt;
&lt;/configuration&gt;
</pre></div><br /><b>User property is</b>: <tt>tocOptions</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="buildDirectory">buildDirectory</a>:</b></p>
        
<div>The build directory where temporary build files will be placed</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>project.build.directory</tt></li>
        </ul><hr />
<p><b><a name="cleanFirst">cleanFirst</a>:</b></p>
        
<div>An option to clean out the whole outputDirectory first.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cleanFirst</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="javadocOptions">javadocOptions</a>:</b></p>
        
<div>Options for calling the javadoc application. Possible options are
(all options are optional): 

<ul>

<li><tt>ignoreError</tt>, specifies if errors calling javadoc
should be ignored</li>

<li><tt>doclet</tt>, used as javadoc <tt>-doclet</tt>
parameter</li>

<li><tt>docletArtifacts</tt>, dependencies will be resovled and
added as <tt>-docletpath</tt> parameter</li>

<li><tt>encoding</tt>, used as javadoc <tt>-encoding</tt> parameter
(default: <tt>${project.build.sourceEncoding}</tt></li>

<li><tt>additionalArguments</tt>, a list of additional arguments
passed to javadoc</li>

<li><tt>includes</tt>/<tt>excludes</tt>, the list of names of
packages to be included in or excluded from JavaDoc processing; use
'<tt>*</tt>' character as wildcard</li>
</ul>
Example configuration: 

<div>
<pre>
&lt;configuration&gt;
   &lt;javadocOptions&gt;
      &lt;ignoreError&gt;false&lt;/ignoreError&gt;
      &lt;encoding&gt;UTF-8&lt;/encoding&gt;
      &lt;doclet&gt;foo.bar.MyDoclet&lt;/doclet&gt;
      &lt;docletArtifacts&gt;
         &lt;docletArtifact&gt;
            &lt;groupId&gt;foo.bar&lt;/groupId&gt;
            &lt;artifactId&gt;foo.bar.mydocletartifact&lt;/artifactId&gt;
            &lt;version&gt;1.0&lt;/version&gt;
         &lt;/docletArtifact&gt;
      &lt;/docletArtifacts&gt;
      &lt;includes&gt;
         &lt;include&gt;com.example.*&lt;/include&gt;
      &lt;/includes&gt;
      &lt;excludes&gt;
         &lt;exclude&gt;com.example.internal.*&lt;/exclude&gt;
      &lt;/excludes&gt;   
      &lt;additionalArguments&gt;
         &lt;additionalArgument&gt;-windowtitle &quot;The Window Title&quot;&lt;/additionalArgument&gt;
         &lt;additionalArgument&gt;-nosince&lt;/additionalArgument&gt;
      &lt;/additionalArguments&gt;
   &lt;/javadocOptions&gt;
&lt;/configuration&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.extras.docbundle.JavadocOptions</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>javadocOptions</tt></li>
        </ul><hr />
<p><b><a name="outputDirectory">outputDirectory</a>:</b></p>
        
<div>The directory where the javadoc content will be generated</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>outputDirectory</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/reference/api</tt></li>
        </ul><hr />
<p><b><a name="scopes">scopes</a>:</b></p>
        
<div>The scopes that the dependencies must have in order to be included</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>scopes</tt></li>
          
<li><b>Default</b>: <tt>compile,provided</tt></li>
        </ul><hr />
<p><b><a name="skipTocGen">skipTocGen</a>:</b></p>
        
<div>Set this property to true to skip the generation of the Eclipse TOC
files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>skipTocGen</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="sourceTypes">sourceTypes</a>:</b></p>
        
<div>Maven module types that will be used to include the source</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>sourceTypes</tt></li>
          
<li><b>Default</b>: <tt>eclipse-plugin</tt></li>
        </ul><hr />
<p><b><a name="tocFile">tocFile</a>:</b></p>
        
<div>The output location of the toc file.<br />
This file will be overwritten.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>tocFile</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/tocjavadoc.xml</tt></li>
        </ul><hr />
<p><b><a name="tocOptions">tocOptions</a>:</b></p>
        
<div>Options for creating the toc files. 

<ul>

<li><tt>mainLabel</tt>, specifies the main label of the toc file
(default: &quot;API Reference&quot;)</li>

<li><tt>mainFilename</tt>, specifies the filename of the TOC file
(default: &quot;overview-summary.html&quot;)</li>
</ul>
Example configuration: 

<div>
<pre>
&lt;configuration&gt;
   &lt;tocOptions&gt;
      &lt;mainLabel&gt;My own label&lt;/mainLabel&gt;
      &lt;mainFilename&gt;myOverviewSummary.html&lt;/mainFilename&gt;
   &lt;/tocOptions&gt;
&lt;/configuration&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.extras.docbundle.TocOptions</tt></li>
          
<li><b>Since</b>: <tt>0.20.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>tocOptions</tt></li>
        </ul>
      </div>
    </div>
  

                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2010-2018
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>
