<!DOCTYPE html>
<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->  
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->  
<!--[if !IE]><!-->
<html lang="en"> <!--<![endif]-->
  <head>
    <title>M2Eclipse | Extension Development</title>
    <!-- Meta -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="M2Eclipse provides tight integration for Apache Maven into the Eclipse IDE." />
    <meta name="author" content="eclipse.org" />
    <meta property="twitter:account_id" content="15710507" />      
    <!-- CSS Global Compulsory-->
    <link rel="stylesheet" href="/m2e/assets/plugins/bootstrap/css/bootstrap.css" />
    <link rel="stylesheet" href="/m2e/assets/css/style.css" />
    <link rel="stylesheet" href="/m2e/assets/css/m2eclipse.css" />
    <link rel="shortcut icon" href="/m2e/assets/img/favicon.ico" />        
    <!-- CSS Implementing Plugins -->
    <link rel="stylesheet" href="/m2e/assets/plugins/font-awesome/css/font-awesome.css" />    
    <!-- GA -->
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-56202333-1', 'eclipse.org');
      ga('send', 'pageview');

    </script>
  </head>

  <body>
    <div class="wrap">
      
            <div class="header">
        <div class="navbar navbar-default" role="navigation">
          <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="/m2e/index.html"> 
                <img id="logo-header" src="/m2e/assets/img/m2e_logo@2x.svg" alt="M2Eclipse" width="150" height="61" style="margin:20px 0px 10px;"/>
              </a>
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse navbar-responsive-collapse">
              <ul class="nav navbar-nav navbar-left">
              
                  
                  
                  <li class="">
                      <a href="/m2e/m2e-news.html">News</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/m2e/m2e-downloads.html">Download</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/m2e/documentation/m2e-documentation.html">Documentation</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/m2e/m2e-community.html">Community</a>
                  </li>
                
              </ul>
            </div>
          </div>
        </div>
      </div><!-- END header -->
      
      <div class="margin-bottom-20"></div>
      <div class="container">
        <div class="row">
  <div class="col-md-3">
    <div class="margin-bottom-30"></div>
    <h4 class="headline">Users</h2>
    <ul class="unstyled">
      <li><a href="/m2e/documentation/m2e-faq.html">FAQ</a></li>
      <li><a href="/m2e/documentation/m2e-execution-not-covered.html">Execution Not Covered</a></li>
    </ul>  
    <h4 class="headline">Developers</h2>
    <ul class="unstyled">
      <li><a href="/m2e/documentation/m2e-development-environment.html">Developement Environment Setup</a></li>
    </ul>  
    <h4 class="headline">Extension Developers</h2>
    <ul class="unstyled">
      <li><a href="/m2e/documentation/m2e-extension-development.html">Getting Started</a></li>
    </ul>      
    <h4 class="headline">Release Notes</h2>
    <ul class="unstyled">
      <li><a href="/m2e/documentation/release-notes-15.html">M2Eclipse 1.5</a></li>
    </ul>      
  </div>  
  <div class="col-md-9 docs">
  <h1><a href="#setting-up-eclipse-ide" name="setting-up-eclipse-ide">Setting up Eclipse IDE</a></h1>
<ul>
  <li>&ldquo;Standard&rdquo; Eclipse distribution 4.3 or newer from <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></li>
  <li>m2e 1.4 or newer from <a href="http://download.eclipse.org/technology/m2e/releases/">http://download.eclipse.org/technology/m2e/releases/</a>, including semi-hidden m2e SDK feature (uncheck &ldquo;Group items by category&rdquo; to see it)</li>
</ul><p><img src="/m2e/assets/img/m2e-sdk-install.png" alt="SDK""/></p><h2><a href="#command-line-build" name="command-line-build">Command line build</a></h2><p>Download and unpack to a local folder Maven 3.0.3 or better available from <a href="http://maven.apache.org/download.html">http://maven.apache.org/download.html</a></p><h1><a href="#prerequisites" name="prerequisites">Prerequisites</a></h1><p>Some OSGi bundle development and PDE knowledge is assumed.</p>
<ul>
  <li>Doc: <a href="http://help.eclipse.org/luna/index.jsp?topic=/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm">http://help.eclipse.org/luna/index.jsp?topic=/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm</a></li>
  <li>Getting Started: <a href="http://www.eclipse.org/articles/Article-PDE-does-plugins/PDE-intro.html">http://www.eclipse.org/articles/Article-PDE-does-plugins/PDE-intro.html</a></li>
  <li>Lars Vogel Tutorial:<a href="http://www.vogella.de/articles/EclipsePlugIn/article.html">http://www.vogella.de/articles/EclipsePlugIn/article.html</a></li>
</ul><h2><a href="#java-code-generation-overview" name="java-code-generation-overview">Java code generation overview</a></h2><p>Although there are no strict rules, usually maven java code generation plugins like antlr3-maven-plugin or maven-jaxb-plugin take one or more input files from project source tree and generate a number java source files in a subdirectory of target/generated-sources/ directory. These generated sources are usually required to compile and/or run project tests.</p><p>To properly support code generation inside Eclipse IDE workspace, the IDE generally needs to perform some configuration (semi) statically during project import and then do actually code generation either on request or automatically as part of workspace build.</p><p>m2e extension that provides support for generation will typically need to:</p>
<ul>
  <li>implement a subclass of org.eclipse.m2e.jdt.AbstractJavaProjectConfigurator to perform necessary project configuration</li>
  <li>implement subclass of MojoExecutionBuildParticipant to delegate actual code generation to underlying maven plugin goal</li>
  <li>provide metadata to register the project configurator with m2e and to map maven plugin execution to the project configurator</li>
</ul><h2><a href="#m2e-antlr3-code-generation-support-explained" name="m2e-antlr3-code-generation-support-explained">m2e/antlr3 code generation support explained</a></h2><p>As an example, here is explanation of how different parts of <a href="https://github.com/sonatype/m2eclipse-extras/tree/0.13.0.20110622-1538/org.sonatype.m2e.antlr">m2e/antlr</a> fit together.</p><p>On command line, <a href="http://www.antlr.org/antlr3-maven-plugin/usage.html">antlr3-maven-plugin</a>, reads ANTLR grammar files from directory specified by ${sourceDirectory} plugin configuration parameter (defaults to src/main/antlr3) and generates output files in directory specified by ${outputDirectory} plugin configuration parameter (defaults to target/generated-sources/antlr3).</p><h2><a href="https://github.com/sonatype/m2eclipse-extras/blob/0.13.0.20110622-1538/org.sonatype.m2e.antlr/src/org/sonatype/m2e/antlr/internal/AntlrProjectConfigurator.java">AntlrProjectConfigurator</a> and corresponding metadata</h2><p><a href="http://git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/AbstractJavaProjectConfigurator.java?id=releases/1.0/1.0.0.20110607-2117">AbstractJavaProjectConfigurator</a> is a convenience abstract implementation of AbstractProjectConfigurator that provides default behaviour common to many java code generation m2e extensions. AbstractJavaProjectConfigurator assumes single additional java source folder needs to be configured for the project and the source folder location is defined by ${outputDirectory} maven plugin configuration parameter. This allows very simple ANTLR project configurator implementation (is explained below)</p>
<pre class="prettyprint linenums">
public class AntlrProjectConfigurator extends AbstractJavaProjectConfigurator {
  @Override
  public AbstractBuildParticipant getBuildParticipant(IMavenProjectFacade projectFacade, 
                                                      MojoExecution execution, 
                                                      IPluginExecutionMetadata executionMetadata) {
    return new AntlrBuildParticipant(execution);
  }
}
</pre><p>The follow extension in plugin.xml registers ANTLR project configurator with m2e</p>
<pre class="prettyprint linenums">
&lt;extension point=&quot;org.eclipse.m2e.core.projectConfigurators&quot;&gt;
  &lt;configurator
    class=&quot;org.sonatype.m2e.antlr.internal.AntlrProjectConfigurator&quot; 
    id=&quot;org.sonatype.m2e.antlr.antlrConfigurator&quot;
    name=&quot;ANTLR Project Configurator&quot;&gt;
  &lt;/configurator&gt;
&lt;/extension&gt;
</pre><p>lifecycle-mapping-metadata.xml located at the root of the project (and at the root of OSGi bundle jar at runtime) maps antlr3-maven-plugin antlr goal to ANTLR project configurator. Note that configurator id in the mapping matches configurator id defined in the extension point above.</p>
<pre class="prettyprint linenums">
&lt;lifecycleMappingMetadata&gt;
   &lt;pluginExecutions&gt;
     &lt;pluginExecution&gt;
       &lt;pluginExecutionFilter&gt;
         &lt;groupId&gt;org.antlr&lt;/groupId&gt;
         &lt;artifactId&gt;antlr3-maven-plugin&lt;/artifactId&gt;
         &lt;versionRange&gt;[3.1.1,)&lt;/versionRange&gt;
          &lt;goals&gt;
            &lt;goal&gt;antlr&lt;/goal&gt;
          &lt;/goals&gt;
       &lt;/pluginExecutionFilter&gt;
       &lt;action&gt;
         &lt;configurator&gt;
           &lt;id&gt;org.sonatype.m2e.antlr.antlrConfigurator&lt;/id&gt;
         &lt;/configurator&gt;
       &lt;/action&gt;
     &lt;/pluginExecution&gt;
   &lt;/pluginExecutions&gt;
&lt;/lifecycleMappingMetadata&gt;
</pre><p>And finally, the following extension in plugin.xml registers m2e extension as lifecycle mapping metadata source with m2e. This is mostly needed as performance optimization, because without this extension m2e would have to search lifecycle-mapping-metadata.xml file in all installed eclipse plugins.</p>
<pre class="prettyprint linenums">
&lt;extension
  point=&quot;org.eclipse.m2e.core.lifecycleMappingMetadataSource&quot;&gt;
&lt;/extension&gt;
</pre><h3><a href="https://github.com/sonatype/m2eclipse-extras/blob/0.13.0.20110622-1538/org.sonatype.m2e.antlr/src/org/sonatype/m2e/antlr/internal/AntlrBuildParticipant.java">AntlrBuildParticipant</a></h3><p>AntlrBuildParticipant generates java source files (any resources generated by ANTLR, to be precise) during eclipse incremental and full builds.</p><p>First AntlrBuildParticipant checks if any of the grammar files have changed and short-cuts code generation if there were no changes.</p>
<pre class="prettyprint linenums">
  File source = maven.getMojoParameterValue(getSession(), getMojoExecution(), &quot;sourceDirectory&quot;, File.class);
  Scanner ds = buildContext.newScanner( source ); // delta or full scanner
  ds.scan();
  String[] includedFiles = ds.getIncludedFiles();
  if (includedFiles == null || includedFiles.length &lt;= 0 ) {
    return null;
  }
</pre><p>Then, AntlrBuildParticipant delegates to MojoExecutionBuildParticipant.build to execute antlr3-maven-plugin antlr goal. This generates resources on filesystem, but does not update eclipse workspace</p>
<pre class="prettyprint linenums">
       Set&lt;IProject&gt; result = super.build( kind, monitor );

Finally, AntlrBuildParticipant refreshes generation output folder in
workspace

       File generated = maven.getMojoParameterValue(getSession(), getMojoExecution(), &quot;outputDirectory&quot;, File.class);
       if (generated != null) {
           buildContext.refresh( generated );
       }
</pre><h3><a href="#testing-m2e-antlr-code-generation-support" name="testing-m2e-antlr-code-generation-support">Testing m2e/antlr code generation support</a></h3><p><a href="https://github.com/sonatype/m2eclipse-extras/tree/0.13.0.20110622-1538/org.sonatype.m2e.antlr.tests/projects/antlr/antlr-v3-p001">Test project</a> is setup to fail java compilation if workspace project source folders were not properly configured or ANTLR code generation did not succeed for whatever reason. <a href="https://github.com/sonatype/m2eclipse-extras/blob/0.13.0.20110622-1538/org.sonatype.m2e.antlr.tests/src/org/sonatype/m2e/antlr/tests/AntlrGenerationTest.java">AntlrGenerationTest.java</a> performs very basic tests to make sure that m2e/antlrv3 integration is not obviously broken.</p><p>Import the test project and wait for all background processing triggered by the new project to finish. Even though the test does not assert this, the workspace project should be fully configured at this point</p>
<dl><dt><code>
       ResolverConfiguration configuration = new ResolverConfiguration();
       IProject project1 = importProject( &quot;projects/antlr/antlr-v3-p001/pom.xml&quot;, configuration );
       waitForJobsToComplete();
</code></dt><dd><p>To make sure no state is retained from one test run to the next,</p><h1><a href="#importproject-always-creates-new-fresh-copy-of-the-test-project" name="importproject-always-creates-new-fresh-copy-of-the-test-project">importProject always creates new/fresh copy of the test project</a></h1><p>under target/test workspace location; the copy is removed by the test tearDown logic.</p></dd>
</dl><p>Automatic workspace build is disable during m2e extensions tests by default, so the build needs to be run explicitly from the test code.</p>
<dl><dt><code>
       project1.build( IncrementalProjectBuilder.FULL_BUILD, monitor );
       project1.build( IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor );
       waitForJobsToComplete();
</code>       </dt><dd><p>Note that there are two calls to IProject.build. First, full, build will generate the code. Second, incremental, build will give JDT Java builder the chance to compile the generated code. This matches how java code generation is handled by a &ldquo;real&rdquo; eclipse workspace, so it is therefore important that AntlrBuildParticipant performs code generation only when source grammar files change, otherwise workspace build will keep restarting itself forever.</p></dd>
</dl><p>At this point the project should be fully configured, the code should be generated and both generated code should be compiled without errors. Lets assert all that</p>
<pre class="prettyprint linenums">
       assertNoErrors( project1 );

       IJavaProject javaProject1 = JavaCore.create( project1 );
       IClasspathEntry[] cp1 = javaProject1.getRawClasspath();

       assertEquals( new Path( &quot;/antlr-p001/target/generated-sources/antlr&quot; ), cp1[3].getPath() );

       assertTrue( project1.getFile( &quot;target/generated-sources/antlr/test/SampleParser.java&quot; ).isSynchronized( IResource.DEPTH_ZERO ) );
       assertTrue( project1.getFile( &quot;target/generated-sources/antlr/test/SampleParser.java&quot; ).isAccessible() );
</pre><p>TODO add code to assert that expected .class files were created</p><h2><a href="#building-the-code-and-generating-p2-repository" name="building-the-code-and-generating-p2-repository">Building the code and generating p2 repository</a></h2><p>This section is not meant as a substitute for Tycho tutorials and documentation, but rather as suggested m2e extension source tree layout and build setup. Explanation is based on <a href="https://github.com/sonatype/m2eclipse-egit/tree/0.13.0.20110628-2018">m2eclipse-egit</a> project.</p><h3><a href="#project-directory-structure-overview" name="project-directory-structure-overview">Project directory structure overview</a></h3>
<pre class="prettyprint linenums">
 m2eclipse-egit/                      &lt;= project basedir, all project files are under this directory
   org.sonatype.m2e.egit/             &lt;= main bundle project
     src/
     pom.xml
   org.sonatype.m2e.egit.feature/     &lt;= eclipse feature project
     src/
     pom.xml
   org.sonatype.m2e.egit.tests/       &lt;= automated tests (optional, but highly recommended)
     feature.xml
     pom.xml
   pom.xml                            &lt;= aggregator/parent pom.xml
</pre><h3>Parent pom.xml</h3><p>This pom.xml snippet tells Maven to enable Tycho for all modules of this project.</p>
<pre class="prettyprint linenums">
 ...
 &lt;build&gt;
   &lt;plugins&gt;
     &lt;plugin&gt;
       &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
       &lt;artifactId&gt;tycho-maven-plugin&lt;/artifactId&gt;
       &lt;version&gt;${tycho-version}&lt;/version&gt;
       &lt;extensions&gt;true&lt;/extensions&gt;
     &lt;/plugin&gt;
   &lt;/plugins&gt;
 ...
</pre><p>This snippet configures p2 repositories that will be used to resolve project dependencies. Indigo release repository does not include m2e org.eclipse.m2e.tests.common, so m2e release repository is specified separately.</p>
<pre class="prettyprint linenums">
 ...
 &lt;repositories&gt;
   &lt;repository&gt;
     &lt;id&gt;eclipse&lt;/id&gt;
     &lt;url&gt;[http://download.eclipse.org/releases/indigo](http://download.eclipse.org/releases/indigo)&lt;/url&gt;
     &lt;layout&gt;p2&lt;/layout&gt;
   &lt;/repository&gt;
   &lt;repository&gt;
     &lt;id&gt;m2e&lt;/id&gt;
     &lt;url&gt;[http://download.eclipse.org/technology/m2e/releases/1.0](http://download.eclipse.org/technology/m2e/releases/1.0)&lt;/url&gt;
     &lt;layout&gt;p2&lt;/layout&gt;
   &lt;/repository&gt;
 &lt;/repositories&gt;
 ...
</pre><h3>org.sonatype.m2e.egit and org.sonatype.m2e.egit.tests</h3><p>org.sonatype.m2e.egit and org.sonatype.m2e.egit.tests are conventional PDE Plug-In projects and only requires minimal pom.xml file.</p>
<pre class="prettyprint linenums">
 &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
 
   &lt;parent&gt;
     &lt;groupId&gt;org.sonatype.m2e.egit&lt;/groupId&gt;
     &lt;artifactId&gt;org.sonatype.m2e.egit.parent&lt;/artifactId&gt;
     &lt;version&gt;0.14.0-SNAPSHOT&lt;/version&gt;
   &lt;/parent&gt;
 
   &lt;artifactId&gt;org.sonatype.m2e.egit&lt;/artifactId&gt;
   &lt;packaging&gt;eclipse-plugin&lt;/packaging&gt;
 
   &lt;name&gt;Maven SCM Handler for EGit Plug-in&lt;/name&gt;
 
 &lt;/project&gt;
</pre><p>There is, however, tycho-surefire-plugin configuration in the parent pom that affects test execution.</p><h3>org.sonatype.m2e.egit.feature</h3><p>org.sonatype.m2e.egit.feature is a PDE Feature project and it serves two purposes. It defines Eclipse Feature that can be installed using p2 installation GUI (it is not possible to install individual bundles). It also generates and optionally deploys to a remote server p2 repository containing the feature and the main bundle.</p><p>feature.xml, feature.properties and license.html files in the root of the project define contents of the feature. This is standard eclipse fare and regular PDE documentation fully applies. Beware that a feature must provide correct license information to be accepted to m2e marketplace catalog.</p><p>p2 repository generation is configured in pom.xml with additional configuration provided via category.xml file located in the root of the project. Additionally, repository zip file contents is controlled by src/main/assembly/assembly.xml.</p><p>Specifically</p><p>Aggregate feature&rsquo;s &ldquo;included&rdquo; dependencies under conventional target/site directory.</p>
<pre class="prettyprint linenums">
     &lt;plugin&gt;
       &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
       &lt;artifactId&gt;tycho-packaging-plugin&lt;/artifactId&gt;
       &lt;version&gt;${tycho-version}&lt;/version&gt;
       &lt;configuration&gt;
         &lt;deployableFeature&gt;true&lt;/deployableFeature&gt;
       &lt;/configuration&gt;
     &lt;/plugin&gt;
</pre><p>Generate p2 repository metadata for artifacts collected in target/site.</p>
<pre class="prettyprint linenums">
     &lt;plugin&gt;
       &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
       &lt;artifactId&gt;tycho-p2-plugin&lt;/artifactId&gt;
       &lt;version&gt;${tycho-version}&lt;/version&gt;
       &lt;executions&gt;
         &lt;execution&gt;
           &lt;id&gt;categorization&lt;/id&gt;
           &lt;phase&gt;package&lt;/phase&gt;
           &lt;goals&gt;
             &lt;goal&gt;category-p2-metadata&lt;/goal&gt;
           &lt;/goals&gt;
         &lt;/execution&gt;
       &lt;/executions&gt;
       &lt;configuration&gt;
         &lt;metadataRepositoryName&gt;Maven SCM Handler for EGit&lt;/metadataRepositoryName&gt;
         &lt;artifactRepositoryName&gt;Maven SCM Handler for EGit&lt;/artifactRepositoryName&gt;
       &lt;/configuration&gt;
     &lt;/plugin&gt;
</pre><p>By convention, p2 repository category information comes from category.xml file.</p>
<pre class="prettyprint linenums">
 &lt;site&gt;
    &lt;feature url=&quot;features/org.sonatype.m2e.egit.feature_0.0.0.qualifier.jar&quot; id=&quot;org.sonatype.m2e.egit.feature&quot; version=&quot;0.0.0.qualifier&quot;&gt;
       &lt;category name=&quot;m2eclipse-egit&quot;/&gt;
    &lt;/feature&gt;
    &lt;category-def name=&quot;m2eclipse-egit&quot; label=&quot;Maven SCM Handler for EGit&quot;/&gt;
 &lt;/site&gt;
</pre><p>Create p2 repository zip file.</p>
<pre class="prettyprint linenums">
     &lt;plugin&gt;
       &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
       &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
       &lt;configuration&gt;
         &lt;descriptors&gt;
           &lt;descriptor&gt;src/main/assembly/assembly.xml&lt;/descriptor&gt;
         &lt;/descriptors&gt;
       &lt;/configuration&gt;
       &lt;executions&gt;
         &lt;execution&gt;
           &lt;id&gt;make-assembly&lt;/id&gt; 
           &lt;phase&gt;package&lt;/phase&gt; 
           &lt;goals&gt;
             &lt;goal&gt;single&lt;/goal&gt; 
           &lt;/goals&gt;
         &lt;/execution&gt;
       &lt;/executions&gt;
     &lt;/plugin&gt;
</pre><p>&hellip; using assembly descriptor src/main/assembly/assembly.xml</p>
<pre class="prettyprint linenums">
 &lt;assembly&gt;
   &lt;id&gt;site&lt;/id&gt;
   &lt;formats&gt;
     &lt;format&gt;zip&lt;/format&gt;
   &lt;/formats&gt;
   &lt;includeBaseDirectory&gt;false&lt;/includeBaseDirectory&gt;
   &lt;fileSets&gt;
     &lt;fileSet&gt;
       &lt;directory&gt;${project.build.directory}/site&lt;/directory&gt;
       &lt;outputDirectory&gt;/&lt;/outputDirectory&gt;
     &lt;/fileSet&gt;
   &lt;/fileSets&gt;
 &lt;/assembly&gt;
</pre><h3><a href="#publishing-p2-repository" name="publishing-p2-repository">Publishing p2 repository</a></h3><p>TBD</p>
<hr/>
  </div>
</div>
      </div><!-- END container -->
    </div><!-- END wrap -->
    
        <div class="stickyFooter">
      <div class="footer">
        <div class="container">
          <div class="row">
            <div class="col-md-4 md-margin-bottom-40"></div><!--/col-md-4-->
            <div class="col-md-4 md-margin-bottom-40">            </div>
            <div class="col-md-4">              
            </div>
          </div>
        </div>
      </div>
      <div class="copyright">
        <div class="container">
          <div class="row">
            <div class="col-md-6">
              <p class="copyright-space">
                <a href="https://www.eclipse.org/">Home</a> | <a href="https://www.eclipse.org/legal/privacy.php">Privacy Policy</a> | <a href="https://www.eclipse.org/legal/termsofuse.php">Terms of Use</a> | <a href="https://www.eclipse.org/legal/copyright.php">Copyright Agent</a> | <a href="https://www.eclipse.org/legal/">Legal</a> | <a href="https://www.eclipse.org/org/foundation/contact.php">Contact Us</a>
              </p>
            </div>
            <div class="col-md-6" align="right">
              <p class="copyright-space">
                Copyright &copy;
                2015 The Eclipse Foundation. All Rights Reserved.
              </p>
            </div>
          </div>
        </div>
      </div>
    </div>



    <!-- JS Global Compulsory -->
    <script type="text/javascript" src="/m2e/assets/plugins/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/jquery-migrate-1.2.1.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/hover-dropdown.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/back-to-top.js"></script>
    <!-- TESTING JS -->
    <script type="text/javascript" src="/m2e/assets/plugins/app.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(function() {
            App.init();
        });
    </script>
    <!--[if lt IE 9]>
        <script src="/m2e/assets/plugins/respond.js"></script>
    <![endif]-->
  </body>
</html>	