<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>Eclipse Lyo - Enabling Tool Integration with OSLC</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <link rel="stylesheet" type="text/css" href="static/css/prism.css">
  <link href="style-new.css" rel="stylesheet">
  <meta name='viewport' content='width=device-width'>
</head>

<body>
<div class="page">
  <div class="lyo-header">
    <a href="/lyo">
      <div class="lyo-logo">
        <div class="bannerContent">
          <div class="logo-image dib"></div>
          <span class="logo-text dib">
            <span class="logo-top db">Eclipse Lyo</span>
            <span class="logo-bottom db">Enabling tool integration with
              <abbr title="Open Services for Lifecycle Collaboration">OSLC</abbr>
            </span>
          </span>
        </div>
      </div>
    </a>
  </div>

  <div class="content">
    <p class="oslc-introtext">Eclipse Lyo is an <abbr title="Software Development Kit">SDK</abbr> to help the Eclipse
      community adopt <a href="http://oslc.co"><abbr title="Open Services for Lifecycle Collaboration">OSLC</abbr></a>
      (Open Services for Lifecycle Collaboration) specifications and build OSLC-compliant tools.</p>


    <h2 class="h2">Getting started</h2>

    <div class="gutter">
      <h3 class="h3">Maven repositories</h3>
      <p>
        Add the following repositories:
      </p>

      <pre><code class="language-xml">&lt;repositories&gt;
    &lt;repository&gt;
        &lt;id&gt;lyo-releases&lt;/id&gt;
        &lt;name&gt;Eclipse Lyo Releases&lt;/name&gt;
        &lt;url&gt;https://repo.eclipse.org/content/repositories/lyo-releases/&lt;/url&gt;
        &lt;snapshots&gt;
            &lt;enabled&gt;false&lt;/enabled&gt;
        &lt;/snapshots&gt;
    &lt;/repository&gt;
    &lt;repository&gt;
        &lt;id&gt;lyo-snapshots&lt;/id&gt;
        &lt;name&gt;Eclipse Lyo Snapshots&lt;/name&gt;
        &lt;url&gt;https://repo.eclipse.org/content/repositories/lyo-snapshots/&lt;/url&gt;
        &lt;releases&gt;
            &lt;enabled&gt;false&lt;/enabled&gt;
        &lt;/releases&gt;
    &lt;/repository&gt;
&lt;/repositories&gt;</code></pre>

    </div>

    <div class="gutter">
      <h3 class="h3">Using Core SDK (OSLC4J)</h3>
      <p>
        Add the following dependencies:
      </p>

      <pre><code class="language-xml">&lt;dependency&gt;
    &lt;groupId&gt;org.eclipse.lyo.oslc4j.core&lt;/groupId&gt;
    &lt;artifactId&gt;oslc4j-core&lt;/artifactId&gt;
    &lt;version&gt;2.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>


      <p>Learn more about OSLC4J on <a href="https://wiki.eclipse.org/Lyo/LyoOSLC4J">Eclipse Lyo Wiki</a> and in the <a
          href="https://download.eclipse.org/lyo/docs/core/2.2.0/overview-summary.html">Javadocs</a>. You might enjoy the
        <a href="https://open-services.net/resources/tutorials/integrating-products-with-oslc/">OSLC tutorial based on
          Lyo</a>.</p>
    </div>


    <div class="gutter">
      <h3 class="h3">Using Client SDK</h3>
      <p>
        Add the following dependencies:
      </p>

      <pre><code class="language-xml">&lt;dependency&gt;
    &lt;groupId&gt;org.eclipse.lyo.clients&lt;/groupId&gt;
    &lt;artifactId&gt;oslc-java-client&lt;/artifactId&gt;
    &lt;version&gt;2.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>


      <p>Learn more about Lyo Client on <a href="https://wiki.eclipse.org/Lyo/BuildClient">Eclipse Lyo Wiki</a> and in
        the <a
            href="https://download.eclipse.org/lyo/docs/client/2.2.0/overview-summary.html">Javadocs</a>.</p>
    </div>

    
    <div class="gutter">
      <h3 class="h3">Using Toolchain Designer</h3>
      <p>
        Install the group <em>Eclipse Lyo Tools</em> from the Eclipse Update Site located under <code>http://download.eclipse.org/lyo/p2/stable/</code>
      </p>
      <p>
        <img src="images/p2.png" alt="">
      </p>
      <p><a href="https://wiki.eclipse.org/Lyo/modelling_and_generation/installation">Detailed installation instructions</a> as well as the <a href="https://wiki.eclipse.org/Lyo/ToolchainModellingAndCodeGenerationWorkshop">Toolchain Designer tutorial</a> are available in the wiki.</p>
      <p>
        <a href="https://wiki.eclipse.org/Lyo/ToolchainModellingAndCodeGenerationWorkshop" target="_blank">
          <img src="https://wiki.eclipse.org/images/7/76/LyoToolchainModel-SpecificationDiagram.png" alt="Specification Diagram view in the Lyo Toolchain Designer">
        </a>
      </p>

    </div>

    <h2 class="h2">Other links</h2>

    <div class="horizontalCenter">
      <a class="lyoLinkButton" href="https://eclipse.org/lyo/download.html">Archives</a>
      <a class="lyoLinkButton" href="https://git.eclipse.org/c/?q=lyo">Source</a>
      <a class="lyoLinkButton" href="https://wiki.eclipse.org/Lyo">Wiki</a>
    </div>


    <div class="gutter">
      <h3 class="h3">Test suite</h3>
      <p>Utilize a test suite to help build interoperable OSLC tools.
        <a href="https://wiki.eclipse.org/Lyo/LyoTestSuite">Learn more</a></p>
    </div>

    <div class="unit lastUnit">
      <h3 class="h3">Reference implementations</h3>
      <p>See how OSLC works directly with working samples and with a simple server to test against.
        <a href="https://wiki.eclipse.org/Lyo/BuildingOSLC4J">Learn more</a></p>
    </div>


  </div>
</div>

<div class="footer">
  <a class="footerLink" href="https://dev.eclipse.org/mailman/listinfo/lyo-dev">Join the mailing list</a>
  <a class="footerLink" href="http://twitter.com/#!/oslcNews">Follow us on Twitter</a>
  <a class="footerLink" href="http://wiki.eclipse.org/Lyo/ContributorsGettingStarted">Contribute to Lyo</a>
</div>

<script src="static/js/prism.js"></script>

<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-24416914-2', 'eclipse.org');
  ga('send', 'pageview');
</script>
</body>

</html>
