<!DOCTYPE html>
<html>

  <head>
	<meta charset="UTF-8">
	<title>Xtext - Continuous Integration (with Maven)</title>
	
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description"
		content="The website of Eclipse Xtext, an open-source framework for development of programming languages and domain-specific languages">
	<meta name="author" content="Sven Efftinge">
	<meta name="author" content="Miro Spoenemann">
	<!--  styles -->
	<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
	<!--[if lt IE 9]>
	  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
	<![endif]-->
	
	<!-- Le fav and touch icons -->
	<link rel="shortcut icon" href="/Xtext/images/favicon.png">
	
	<link href="/Xtext/css/bootstrap.css" rel="stylesheet" type='text/css'>
	<link href="/Xtext/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
	<link href="/Xtext/css/shield-responsive.css" rel="stylesheet" type='text/css'>
	<link href='/Xtext/css/fonts.css' rel='stylesheet' type='text/css'>
	<link href="/Xtext/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
	<link href="/Xtext/css/prettify.css" type="text/css" rel="stylesheet"/>
	<link href="/Xtext/css/style.css" rel="stylesheet" type='text/css'>
	<!-- cover flow -->
	<link href="/Xtext/css/coverflow.css" rel="stylesheet" type='text/css'>
	<!--[if lt IE 9]>
	  <link href="/css/iebugs.css" rel="stylesheet" type='text/css'>
	<![endif]-->

	<!-- BEGIN Cookie Consent
	<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
	<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
	<script>
	window.addEventListener("load", function(){
	window.cookieconsent.initialise({
		"palette": {
		"popup": {
		  "background": "#000"
		},
		"button": {
		  "background": "#f1d600"
		}
		},
		"theme": "edgeless",
		"type": "opt-in",
		onInitialise: function (status) {
		  var type = this.options.type;
		  var didConsent = this.hasConsented();
		  if (type == 'opt-in' && didConsent) {
		    // TODO: enable cookies
		  }
		  if (type == 'opt-out' && !didConsent) {
		    // TODO: disable cookies
		  }
		},
		onStatusChange: function(status, chosenBefore) {
		  var type = this.options.type;
		  var didConsent = this.hasConsented();
		  if (type == 'opt-in' && didConsent) {
		    // TODO: enable cookies
		  }
		  if (type == 'opt-out' && !didConsent) {
		    // TODO: disable cookies
		  }
		}, 
		onRevokeChoice: function() {
		  var type = this.options.type;
		  if (type == 'opt-in') {
		    // TODO: disable cookies
		  }
		  if (type == 'opt-out') {
		    // TODO: enable cookies
		  }
		},
		"content": {
		"href": "http://www.eclipse.org/legal/privacy.php"
		}
	})});
	</script>
	END Cookie Consent -->
</head>


  <body>
  
    <header class="site-header">

  <!-- Navbar -->
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse"
          data-target=".nav-collapse"> <span class="icon-bar"></span> <span
          class="icon-bar"></span> <span class="icon-bar"></span>
        </a> <a class="brand" href="/Xtext/index.html"></a>
        <div class="nav-collapse collapse" style="height: 0px;">
          <ul class="nav">
            <!--li ><a href="/Xtext/news.html">News</a></li-->
            <li ><a href="/Xtext/download.html">Download</a></li>
            <li ><a href="/Xtext/documentation/index.html">Documentation</a></li>
            <li ><a href="/Xtext/community.html">Community</a></li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Support &amp; Trainings<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://www.itemis.com/en/xtext/support-and-team/" target="_blank">itemis</a></li>
                <li><a href="https://typefox.io/trainings-2" target="_blank">TypeFox</a></li>
              </ul>
            </li>
            <li ><a href="http://xtend-lang.org">Xtend</a></li>
          </ul>
          <!--div class="nav pull-right">
            <li ><a><iframe src="https://ghbtns.com/github-btn.html?user=eclipse&repo=xtext&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe></a></li>
          </div-->
        </div>
        <!--/.nav-collapse -->
      </div>
    </div>
  </div>
  <!-- Navbar End -->

</header>


    <div class="page-content">
  <script>
    function startSearch(event) {
        if (event.keyCode == 13) {
            var q = 'site:eclipse.org/Xtext/documentation+' + event.target.value;
            window.open('https://www.google.com/search?q=' + q, "_self");
        }
    }
  </script>
  <div class="wrapper">
  	<div id="page">  
      <div class="inner">
        <div id="maincontainer" class="container">
          <span class="edit-on-github pull-right">
            <a href="https://github.com/eclipse/xtext/edit/website-published/xtext-website/documentation/350_continuous_integration.md">Edit on Github</a>
          </span>
          <div class="span3" style="margin-left: 0px;">
            <div class="search-bar">
              <img src="/Xtext/images/search-gray.png"/>
              <input type="search" id="google-search" onkeyup="startSearch(event);"/>
            </div>
            <ul id="nav-outline" style="margin-left: 0px;">
	<li class="nav-part">Getting Started</li>
	<li><a href="102_domainmodelwalkthrough.html">15 Minutes Tutorial</a></li>
	<li><a href="103_domainmodelnextsteps.html">15 Minutes Tutorial - Extended</a></li>
	<li><a href="104_jvmdomainmodel.html">Five simple steps to your JVM language</a></li>
		
	<li class="nav-part">Reference Documentation</li>
	<li><a href="301_grammarlanguage.html">The Grammar Language</a></li>
	<li><a href="302_configuration.html">Configuration</a></li>
	<li><a href="303_runtime_concepts.html">Language Implementation</a></li>
	<li><a href="305_xbase.html">Integration with Java</a></li>
	<li><a href="307_special_languages.html">Typical Language Configurations</a></li>
	<li><a href="308_emf_integration.html">Integration with EMF</a></li>
	<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
	<!--li><a href="320_idea_support.html">IntelliJ IDEA Support</a></li-->
	<li><a href="330_web_support.html">Web Editor Support</a></li>
	<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
          </div>
          <div class="span8 doc-contents">
            <h1 id="continuous-integration">Continuous Integration (with Maven)</h1>

<p>There are two aspects to consider when it comes to continuous integration. Firstly you may want to have a continuous build of your language that runs all tests and creates an Eclipse update site and other needed artifacts, and secondly you may want to have your language and its corresponding code generator integrated in your application builds. We will discuss both cases in this section along with a set of example projects, which you can clone, inspect or download from <a href="https://github.com/xtext/maven-xtext-example">github.com/xtext/maven-xtext-example</a>.</p>

<p>To follow this section you need a basic understanding of how Maven works. Please read a tutorial on Maven if you don’t know anything about it.</p>

<h2 id="an-overview-of-the-example-projects">An overview of the example projects</h2>

<p>If you have a look at the example, you’ll find seven different projects of which six are for the various aspects of the language and its build. First we have the language’s runtime project, UI project and test project. In addition we need a feature project, an update site project and a project where we put the parent pom. The seventh project is called <code>example-project</code> and is really a small application project that uses the built language and triggers the code generator through a dedicated maven plug-in. Let’s first have a look at how to build the language.</p>

<h2 id="tycho-build">Building an Xtext language with Maven and Tycho</h2>

<p>Although the runtime aspects of an Xtext language is not dependent on Eclipse or its OSGi container, an Xtext language is developed in the form of OSGi bundles. For this kind of builds most people rely on <a href="http://eclipse.org/tycho/">Tycho</a>, which is an OSGi/P2 adapter plug-in for Maven builds. Tycho obtains much information from the OSGi bundle’s manifest. Additionally needed information is configured through the pom.xml file which sits at the root of each project.</p>

<h3 id="the-parent-project-mymavenizedherolanguageparent">The parent project (my.mavenized.herolanguage.parent)</h3>

<p>All of the projects are aggregated in a parent pom in the root directory. If you import the projects into eclipse the imported project is called <code>my.mavenized.herolanguage.parent</code>. Information defined in the parent pom is automatically inherited by the aggregated child projects, so you don’t need to reconfigure the same information over and over again. Here we have configured two additional plug-ins:</p>

<ul>
  <li>
    <p>The Xtend compiler plug-in will generate the Java source code for any Xtend files during the ‘generate-sources’ phase</p>

    <pre><code class="language-xml">&lt;pluginManagement&gt;
  &lt;plugins&gt;
    &lt;!-- xtend-maven-plugin is in pluginManagement instead of in plugins
       so that it doesn't run before the exec-maven-plugin's *.mwe2 gen;
       this way we can list it after. 
      --&gt;
          
    &lt;plugin&gt;
      &lt;groupId&gt;org.eclipse.xtend&lt;/groupId&gt;
      &lt;artifactId&gt;xtend-maven-plugin&lt;/artifactId&gt;
      &lt;version&gt;${xtext.version}&lt;/version&gt;
      &lt;executions&gt;
        &lt;execution&gt;
          &lt;goals&gt;
            &lt;goal&gt;compile&lt;/goal&gt;
            &lt;goal&gt;xtend-install-debug-info&lt;/goal&gt;
            &lt;goal&gt;testCompile&lt;/goal&gt;
            &lt;goal&gt;xtend-test-install-debug-info&lt;/goal&gt;
          &lt;/goals&gt;
        &lt;/execution&gt;
      &lt;/executions&gt;
      &lt;configuration&gt;
        &lt;outputDirectory&gt;xtend-gen&lt;/outputDirectory&gt;
      &lt;/configuration&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/pluginManagement&gt;
</code></pre>
  </li>
  <li>
    <p>The Tycho plug-in will pick up and use Eclipse plug-in specific configuration data from the projects in order to build Eclipse conformant OSGi bundles, features and an update site.</p>

    <pre><code class="language-xml">&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;
</code></pre>
  </li>
</ul>

<p>To build the entire project you have to run your maven build with this pom file.</p>

<h3 id="the-update-site-project-mymavenizedherolanguageupdatesite">The update site project (my.mavenized.herolanguage.updatesite)</h3>

<p>The project <code>my.mavenized.herolanguage.updatesite</code> denotes the updatesite project and only contains a pom.xml and a file called category.xml. The latter includes information about which features are contained in the update site. As you can see, the <code>category.xml</code> file points to the single feature, which is defined in the project <code>my.mavenized.herolanguage.sdk</code>.</p>

<h3 id="the-feature-project-mymavenizedherolanguagesdk">The feature project (my.mavenized.herolanguage.sdk)</h3>

<p>This is another project made up on configuration data solely. It contains the <code>feature.xml</code> file which points to the Eclipse plug-ins (bundles) included in this feature.</p>

<h3 id="the-core-language-project-mymavenizedherolanguage">The core language project (my.mavenized.herolanguage)</h3>

<p>The <code>pom.xml</code> for the language project contains information about how Maven should run the Xtext’s code generator. The first plug-in invokes the MWE2 file through a standard Java process:</p>

<pre><code class="language-xml">&lt;plugin&gt;
  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
  &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
  &lt;version&gt;1.4.0&lt;/version&gt;
  &lt;executions&gt;
    &lt;execution&gt;
      &lt;id&gt;mwe2Launcher&lt;/id&gt;
      &lt;phase&gt;generate-sources&lt;/phase&gt;
      &lt;goals&gt;
        &lt;goal&gt;java&lt;/goal&gt;
      &lt;/goals&gt;
    &lt;/execution&gt;
  &lt;/executions&gt;
  &lt;configuration&gt;
    &lt;mainClass&gt;org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher&lt;/mainClass&gt;
    &lt;arguments&gt;
      &lt;argument&gt;/${project.basedir}/src/my/mavenized/GenerateHeroLanguage.mwe2&lt;/argument&gt;
      &lt;argument&gt;-p&lt;/argument&gt;
      &lt;argument&gt;rootPath=/${project.basedir}/..&lt;/argument&gt;
    &lt;/arguments&gt;
    &lt;classpathScope&gt;compile&lt;/classpathScope&gt;
    &lt;includePluginDependencies&gt;true&lt;/includePluginDependencies&gt;
    &lt;cleanupDaemonThreads&gt;false&lt;/cleanupDaemonThreads&gt;&lt;!-- see https://bugs.eclipse.org/bugs/show_bug.cgi?id=475098#c3 --&gt;
  &lt;/configuration&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.eclipse.emf&lt;/groupId&gt;
      &lt;artifactId&gt;org.eclipse.emf.mwe2.launch&lt;/artifactId&gt;
      &lt;version&gt;2.9.1.201705291010&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
      &lt;artifactId&gt;org.eclipse.xtext.common.types&lt;/artifactId&gt;
      &lt;version&gt;${xtext.version}&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
      &lt;artifactId&gt;org.eclipse.xtext.xtext.generator&lt;/artifactId&gt;
      &lt;version&gt;${xtext.version}&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
      &lt;artifactId&gt;org.eclipse.xtext.xbase&lt;/artifactId&gt;
      &lt;version&gt;${xtext.version}&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
      &lt;artifactId&gt;xtext-antlr-generator&lt;/artifactId&gt;
      &lt;version&gt;[2.1.1, 3)&lt;/version&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
&lt;/plugin&gt;
</code></pre>

<p>The second used plug-in cleans the directories containing generated resources during the clean phase:</p>

<pre><code class="language-xml">&lt;plugin&gt;
  &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  &lt;artifactId&gt;maven-clean-plugin&lt;/artifactId&gt;
  &lt;version&gt;2.5&lt;/version&gt;
  &lt;configuration&gt;
    &lt;filesets&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/../my.mavenized.herolanguage/src-gen/&lt;/directory&gt;
			&lt;includes&gt;
				&lt;include&gt;**/*&lt;/include&gt;
			&lt;/includes&gt;
		&lt;/fileset&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/../my.mavenized.herolanguage.tests/src-gen/&lt;/directory&gt;
			&lt;includes&gt;
				&lt;include&gt;**/*&lt;/include&gt;
			&lt;/includes&gt;
		&lt;/fileset&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/../my.mavenized.herolanguage.ide/src-gen/&lt;/directory&gt;
			&lt;includes&gt;
				&lt;include&gt;**/*&lt;/include&gt;
			&lt;/includes&gt;
		&lt;/fileset&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/../my.mavenized.herolanguage.ui/src-gen/&lt;/directory&gt;
			&lt;includes&gt;
				&lt;include&gt;**/*&lt;/include&gt;
			&lt;/includes&gt;
		&lt;/fileset&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/../my.mavenized.herolanguage.ui.tests/src-gen/&lt;/directory&gt;
			&lt;includes&gt;
				&lt;include&gt;**/*&lt;/include&gt;
			&lt;/includes&gt;
		&lt;/fileset&gt;
		&lt;fileset&gt;
			&lt;directory&gt;${basedir}/model/generated/&lt;/directory&gt;
		&lt;/fileset&gt;
    &lt;/filesets&gt;
  &lt;/configuration&gt;
&lt;/plugin&gt;
</code></pre>

<h3 id="the-ui-language-project-mymavenizedherolanguageui">The ui language project (my.mavenized.herolanguage.ui)</h3>

<p>Here all code that is specific to eclipse is located. All the additions that you place for the UI of the language, all editors, wizards and preferences, are to be placed inside this project. Regarding the maven build the <code>pom.xml</code> is not very special.</p>

<h3 id="the-tests-language-project-mymavenizedherolanguagetests">The tests language project (my.mavenized.herolanguage.tests)</h3>

<p>To separate the testing code from the application you should place all your unit tests into this project. The <code>pom.xml</code> includes the <code>tycho-surefire-plugin</code> for the testing but nothing special apart.</p>

<h2 id="standalone-build">Integration in Standard Maven Builds</h2>

<p>Now that we can build our language we need to be able to integrate our language compiler in the integration build of application projects. For this purpose a dedicated maven-plugin is available in Maven central. We now refer to the project <code>example-project</code>, which is a standard Java-project that shouldn’t contain any Eclipse plug-in specific information, nor should it be built with Tycho. Let’s have a look at the pom.xml and therein the Xtext plug-in.</p>

<pre><code class="language-xml">&lt;plugin&gt;
	&lt;groupId&gt;org.eclipse.xtext&lt;/groupId&gt;
	&lt;artifactId&gt;xtext-maven-plugin&lt;/artifactId&gt;
	&lt;version&gt;${xtext-version}&lt;/version&gt;
	&lt;executions&gt;
		&lt;execution&gt;
			&lt;goals&gt;
				&lt;goal&gt;generate&lt;/goal&gt;
			&lt;/goals&gt;
		&lt;/execution&gt;
	&lt;/executions&gt;
	&lt;configuration&gt;
		&lt;languages&gt;
			&lt;language&gt;
				&lt;setup&gt;my.mavenized.HeroLanguageStandaloneSetup&lt;/setup&gt;
				&lt;outputConfigurations&gt;
					&lt;outputConfiguration&gt;
						&lt;outputDirectory&gt;src/main/generated-sources/xtend/&lt;/outputDirectory&gt;
					&lt;/outputConfiguration&gt;
				&lt;/outputConfigurations&gt;
			&lt;/language&gt;
		&lt;/languages&gt;
	&lt;/configuration&gt;
	&lt;dependencies&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;my.mavenized.herolanguage&lt;/groupId&gt;
			&lt;artifactId&gt;my.mavenized.herolanguage&lt;/artifactId&gt;
			&lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
		&lt;/dependency&gt;
	&lt;/dependencies&gt;
&lt;/plugin&gt;
</code></pre>

<p>You may add multiple languages in the languages section. A language will use the default outputConfiguration, but you can override the different properties just as you can do within Eclipse preferences.</p>

<h2 id="maven-tycho-hints">Maven Tycho Hints</h2>

<p>Tycho allows you to resolve project dependencies against existing p2 repositories. There are two ways to define target p2 repositories in a Tycho build. The first way is to define the repository URLs directly in the <code>pom.xml</code> using maven <code>&lt;repositories&gt;</code> section. The p2 repositories need to be marked with layout=p2.<br />
The second way is to use eclipse <a href="https://wiki.eclipse.org/Tycho/Target_Platform#Target_files">target platform files</a>. This approach is much faster, because the target platform resolution is performed only once, while the repository look-ups have to be done for every module. Using the target platform will drastically reduce the build time, especially in bigger projects with a lot of modules.</p>

<p>To further speed up the p2 dependency resolution step, use the concrete build repository instead of a project’s repository or the huge <a href="http://download.eclipse.org/releases/photon/">eclipse common</a> composite repository. In the table below you can find p2 repository URLs for Xtext releases and their dependencies. Versions in parentheses represent the minimal required versions.</p>

<table>
  <thead>
    <tr>
      <th>Xtext</th>
      <th>EMF</th>
      <th>MWE2/MWE</th>
      <th>Xpand</th>
      <th>Eclipse</th>
      <th>All included in</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.11.0/">2.11.0</a></td>
      <td><a href="http://download.eclipse.org/releases/neon/201606221000">2.12.0</a> (2.12.0)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.9.0/">2.9.0</a> (2.7.1)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201605260315">2.2.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.6/R-4.6-201606061100">4.6.0</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/neon/201606221000">Neon*</a></td>
    </tr>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.10.0/">2.10.0</a></td>
      <td><a href="http://download.eclipse.org/releases/neon/201606221000">2.12.0</a> (2.12.0)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.9.0/">2.9.0</a> (2.7.1)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201605260315">2.2.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.6/R-4.6-201606061100">4.6.0</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/neon/201606221000">Neon</a></td>
    </tr>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.9.1/">2.9.1</a></td>
      <td><a href="http://download.eclipse.org/modeling/emf/emf/updates/2.11.x/core/">2.11.1</a> (2.10.2)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.8.3/">2.8.3</a> (2.7.1)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201505260349">2.1.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.5-M-builds/">4.5.2</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/mars/">Mars SR2*</a></td>
    </tr>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.8.4/">2.8.4</a></td>
      <td><a href="http://download.eclipse.org/modeling/emf/emf/updates/2.11.x/core/">2.11.1</a> (2.10.2)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.8.1/">2.8.1</a> (2.7.1)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201505260349">2.1.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.5/R-4.5-201506032000/">4.5.1</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/mars/">Mars SR1</a></td>
    </tr>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.8.3/">2.8.3</a>, <a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.8.2/">2.8.2</a>, <a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.8.1/">2.8.1</a></td>
      <td><a href="http://download.eclipse.org/modeling/emf/emf/updates/2.11/core/R201506010402/">2.11.0</a> (2.10.2)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.8.0/">2.8.0</a> (2.7.1)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201505260349">2.1.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.5/R-4.5-201506032000/">4.5.0</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/mars/201506241002/">Mars R</a></td>
    </tr>
    <tr>
      <td><a href="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/maintenance/R201411190455/">2.7.3</a></td>
      <td><a href="http://download.eclipse.org/modeling/emf/emf/updates/2.10.x/core/S201501230452/">2.10.2</a> (2.10)</td>
      <td><a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/R201409021051/mwe2lang/">2.7.0</a> <a href="http://download.eclipse.org/modeling/emft/mwe/updates/releases/R201409021027/mwe">1.3.4</a> (2.7.0/1.2)</td>
      <td><a href="http://download.eclipse.org/modeling/m2t/xpand/updates/releases/R201406030414">2.0.0</a> (1.4)</td>
      <td><a href="http://download.eclipse.org/eclipse/updates/4.4/R-4.4.2-201502041700">4.4.2</a> (3.6)</td>
      <td><a href="http://download.eclipse.org/releases/luna/201502271000/">Luna SR2</a></td>
    </tr>
  </tbody>
</table>

<p>The following is an example target platform definition for Xtext 2.8.4 and eclipse 4.5 alias Mars R.</p>

<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;?pde version="3.8"?&gt;
&lt;target name="org.xtext.myxtextlanguage.target" sequenceNumber="1"&gt;
&lt;locations&gt;
&lt;location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit"&gt;
&lt;unit id="org.eclipse.jdt.feature.group" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.platform.feature.group" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.pde.feature.group" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.draw2d.feature.group" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.xpand" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.xtend" version="0.0.0"/&gt;
&lt;unit id="org.eclipse.xtend.typesystem.emf" version="0.0.0"/&gt;
&lt;repository location="http://download.eclipse.org/releases/mars/201506241002/"/&gt;
&lt;/location&gt;
&lt;location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit"&gt;
&lt;unit id="org.eclipse.emf.mwe2.launcher.feature.group" version="0.0.0"/&gt;
&lt;repository location="http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.8.1/"/&gt;
&lt;/location&gt;
&lt;location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="false" type="InstallableUnit"&gt;
&lt;unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/&gt;
&lt;repository location="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.8.4/"/&gt;
&lt;/location&gt;
&lt;/locations&gt;
&lt;/target&gt;
</code></pre>

          </div>
        </div>
      </div>
    </div>
  </div>
</div>
    
    <footer class="site-footer">
  <div id="extra">
    <div class="inner">
      <div class="container">
        <div class="row">
          <div class="span6">
            <h3 class="footer-links-header">Quick Links</h3>
            <ul class="footer-links clearfix">
              <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
              <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
              <li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
              <li><a href="http://www.eclipse.org/legal/">Legal</a></li>
            </ul>
            <ul class="footer-links clearfix">
              <li><a href="http://www.eclipse.org">Eclipse Home</a></li>
              <li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
              <li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
              <li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
            </ul>
          </div>
          <div class="span6">
            <!-- Social Media Links -->
            <h3 class="footer-links-header"">Social Media</h3>
            <ul class="footer-links clearfix">
              <li>
                <a href="https://twitter.com/xtext"><img src="/Xtext/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtext on Twitter</a>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
  <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
  <!-- Le javascript
      ================================================== -->
  <!-- Placed at the end of the document so the pages load faster -->
  
  <script src="/Xtext/js/jquery-1.11.3.min.js"></script>
  <script src="/Xtext/js/bootstrap.min.js"></script>
  <script src="/Xtext/js/jquery.easing.1.3.js" type="text/javascript"></script>
  <script src="/Xtext/js/jquery.prettyPhoto.js" type="text/javascript"></script>
  <script src="/Xtext/js/prettify.js" type="text/javascript"></script>
  <script src="/Xtext/js/lang-xtend.js" type="text/javascript"></script>
  <script src="/Xtext/js/lang-common.js" type="text/javascript"></script>
  <script src="/Xtext/js/custom.js" type="text/javascript"></script>
  <!--script src="https://apis.google.com/js/platform.js" async defer></script-->
  <!--script type="text/javascript">
    var _gaq = _gaq || [];  
      _gaq.push([ '_setAccount', 'UA-2429174-3' ]);
    _gaq.push([ '_trackPageview' ]);
    (function() {
      var ga = document.createElement('script');
      ga.type = 'text/javascript';
      ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl'
          : 'http://www')
          + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(ga, s);
    })();
  </script-->
  <script src="/Xtext/js/coverflow.min.js" type="text/javascript"></script>
  <script>
      $(function() {
        $('#coverflow').coverflow({
          active : 1,
          visibleAside: 2,
          overlap : 0.5,
          scale : 0.9,
          angle : 20,
          trigger : {
            "itemfocus" : true,
            "swipe" : true,
            "mousewheel" : false
          }
        });
        $('#coverflow :hidden').toggle();
        $(window).resize(function() {
          $('#coverflow').coverflow();
        });
      });

  </script>
</footer>


  </body>

</html>
