<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
	$pageTitle 		= "m2e-wtp - Downloads";

	$html = <<<EOHTML
<div id="midcolumn">
	<h3>Installing m2e-wtp</h3>

    <p>m2e-wtp requires an Eclipse JavaEE distribution, and can be installed from the releases update site. 
       m2e-wtp is generally compatible with Eclipse Indigo (3.7), Juno (3.8, 4.2) and Kepler (4.3, using the appropriate update site).</p>
       <p><b style="color:red">Please note that, m2e-wtp and Sonatype's m2eclipse-wtp overlap and can not be installed together</b>. 
       <ul>
           <li>if you add the m2e-wtp update site to your list of Available Update Sites, 
                doing "Help > Find Updates" should find m2e-wtp as a suitable replacement for m2eclipse-wtp, and everything should update properly.
           </li>
           <li>if you try to update your pre Juno-SR2 Eclipse installation via "Help > Install New Software...", 
               m2e-wtp won't install because of the conflict with m2eclipse-wtp. This p2 bug is fixed since Juno SR2.
           </li>
       </ul>
     </p>
	 <p><strong>Latest release : 1.0.0 </strong></p>
   <p><b style="color:red">Please note that, m2e-wtp and JBoss' JAX-RS, JSF, JPA configurators overlap and can not be installed together</b>. The same update rules as with m2eclipse-wtp apply.
        <ul>
        <li>
  	        Indigo / Juno  (e3.7/e3.8/e4.2): <a href="http://download.eclipse.org/m2e-wtp/releases/juno/">http://download.eclipse.org/m2e-wtp/releases/juno/</a>
        </li>
        <li>
            Kepler (e4.3) : <a href="http://download.eclipse.org/m2e-wtp/releases/kepler/">http://download.eclipse.org/m2e-wtp/releases/kepler/</a>
        </li>
        </ul>
<!--
  <p><strong>Latest m2e-wtp milestone build : 1.0.0 M7</strong></p>
        <ul><li>Kepler (e4.3) : 
  <a href="http://download.eclipse.org/m2e-wtp/milestones/kepler/1.0.0">http://download.eclipse.org/m2e-wtp/milestones/kepler/1.0.0</a>
        </li>
        <li>Indigo / Juno (e3.7/e3.8/e4.2) : <i>p2 update site not available yet</i> </li></ul>
-->
	<p><strong>Latest m2e-wtp dev build</strong></p>
        <ul><li>Kepler (e4.3) : 
	<a href="http://download.eclipse.org/m2e-wtp/snapshots/kepler">http://download.eclipse.org/m2e-wtp/snapshots/kepler</a>
        </li>
        <li>Indigo / Juno (e3.7/e3.8/e4.2) : 
  <a href="http://download.eclipse.org/m2e-wtp/snapshots/juno">http://download.eclipse.org/m2e-wtp/snapshots/juno</a>
        </li></ul>
	 <p>Former m2eclipse-wtp : version 0.15.3 (using the org.maven.ide.eclipse.wtp namespace, hosted at jboss.org)</p>
        <ul><li>	
            <a href="http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/">http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/</a>
         </li></ul>

</div>
EOHTML;
	
	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
