<?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'
/*******************************************************************************
 * Copyright (c) 2009
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *
 *******************************************************************************/

	$pageTitle 		= "Tycho - Documentation";

	$html  = <<<EOHTML
<div id="midcolumn">
<h2>$pageTitle</h2>
<p>The documentation of the Tycho project is maintained in the <a href="https://wiki.eclipse.org/Category:Tycho">Eclipse wiki</a>.</p>

<p>
For an introduction to Tycho, we recommend following the <a href="https://www.eclipsecon.org/2013/node/1277.html">EclipseCon Tycho Tutorial</a>.
</p>

<p>In order to set up Tycho in a Maven build, follow the instructions and examples on the pages
<a href="https://wiki.eclipse.org/Tycho/Reference_Card">Tycho Reference Card</a> and <a href="https://wiki.eclipse.org/Tycho/Packaging_Types">Tycho Packaging Types</a>.
</p>

<p>For detailed reference documentation, refer to the <a href="sitedocs/index.html">Maven plugin documentation for Tycho</a>.
</p>

<p>Other sources of information:
<ul>
  <li><a href="https://wiki.eclipse.org/Tycho/Demo_Projects">Tycho demo projects</a></li>
  <li><a href="http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-its/">Tycho integration tests contain many examples you can use as templates</a></li>
  <li><a href="http://dev.eclipse.org/mhonarc/lists/tycho-user/">Search the tycho-user mailing list archive</a></li>
  <li><a href="http://dev.eclipse.org/mhonarc/lists/tycho-dev/">Search the tycho-dev mailing list archive</a></li>
  <li><a href="https://dev.eclipse.org/mailman/listinfo/tycho-user">Ask on the tycho-user@eclipse.org mailing list</a></li>
</ul>
</p>

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