<!DOCTYPE html>
<!--
   This page was created by modifying the "barebones" or "thin" templates
   that are available from 
   https://eclipse.org/eclipse.org-common/themes/solstice/docs/
-->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="author" content="Christopher Guindon and David Williams"/>
    <meta name="keywords" content="eclipse.org, Eclipse Foundation"/>
    <link href="//fonts.googleapis.com/css?family=Open+Sans:400,700,300,600,100" rel="stylesheet" type="text/css"/>
    <link rel="shortcut icon" href="/eclipse.org-common/themes/solstice/public/images/favicon.ico"/>
    <title>CBI Downloads</title>
    <link rel="stylesheet" href="/eclipse.org-common/themes/solstice/public/stylesheets/styles.min.css"/>
<meta property="og:description" content="Eclipse is probably best known as a Java IDE, but it is more: it is an IDE framework, a tools framework, an open source project, a community, an eco-system, and a foundation."/>
<meta property="og:image" content="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-200x200.png"/>
<meta property="og:title" content="CBI Downloads"/>
<meta property="og:image:width" content="200"/>
<meta property="og:image:height" content="200"/>
<!-- 'itemprop' is non-standard
<meta itemprop="name" content="CBI Downloads"/>
<meta itemprop="description" content="Eclipse is probably best known as a Java IDE, but it is more: it is an IDE framework, a tools framework, an open source project, a community, an eco-system, and a foundation."/>
<meta itemprop="image" content="https://eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-400x400.png"/>
-->
<meta name="twitter:site" content="@EclipseFdn"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="CBI Downloads"/>
<meta name="twitter:url" content="https://eclipse.org/eclipse.org-common/themes/solstice/html_template/index.php?theme=solstice"/>
<meta name="twitter:description" content="Eclipse is probably best known as a Java IDE, but it is more: it is an IDE framework, a tools framework, an open source project, a community, an eco-system, and a foundation."/>
<meta name="twitter:image" content="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-400x400.png"/>

    <script> var eclipse_org_common = {"settings":{"cookies_class":{"name":"eclipse_settings","enabled":1}}}</script>
    </head>
  <body style="margin:1.0in;padding:0.5in;margin-top:0;padding-top:0" id="body_solstice">
    <a class="sr-only" href="#content">Skip to main content</a>
    <!-- skip "login" releated
        <div class="clearfix toolbar-container-wrapper">
      <div class="container">
        <div class="text-right toolbar-row row hidden-print">
          <div class="col-md-24 row-toolbar-col">
            <ul class="list-inline">
              <li><a href="https://dev.eclipse.org/site_login/createaccount.php"><i class="fa fa-user fa-fw"></i> Create account</a></li>
              <li><a href="https://dev.eclipse.org/site_login/?takemeback=https://eclipse.org/cbi/downloads/index.html"><i class="fa fa-sign-in fa-fw"></i> Log in</a></li>
            </ul>
          </div>
        </div>
      </div>
    </div>
    -->
<!-- banner role not necessary
    <header role="banner" id="header-wrapper">
    -->
    <header id="header-wrapper">
  <div class="container">
    <div class="row" id="header-row">
            <div class="hidden-xs col-sm-8 col-md-6 col-lg-5" id="header-left">
        <div class="wrapper-logo-default"><a href="https://eclipse.org/"><img class="logo-eclipse-default img-responsive hidden-xs" alt="logo" src="/eclipse.org-common/themes/solstice/public/images/logo/eclipse-426x100.png"/></a></div>
      </div>            <div class="col-sm-10 col-md-8 col-lg-5 hidden-print hidden-xs pull-right" id="header-right">
            <div class="row"><div class="col-md-24">
    <div id="custom-search-form" class="reset-box-sizing">
    <script>
      (function() {
        var cx = '011805775785170369411:p3ec0igo0qq';
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//cse.google.com/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();
    </script>
<!-- too much! 
   <gcse:searchbox-only gname="main" resultsUrl="https://www.eclipse.org/home/search.php"></gcse:searchbox-only>
-->
    </div></div></div>
    <!-- remove "donate" button 
        <div id="btn-call-for-action"><a href="https://www.eclipse.org/donate/" class="btn btn-huge btn-info"><i class="fa fa-star"></i> Donate</a></div>
      </div>
    -->
      <div class="col-sm-14 col-md-16 col-lg-19 reset" id="main-menu-wrapper">
  <div class="navbar yamm" id="main-menu">
  <!--
    <div id="navbar-collapse-1" class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
      
        <li class="visible-thin"><a href="https://eclipse.org/downloads/" target="_self">Download</a></li>
        <li><a href="https://eclipse.org/users/" target="_self">Getting Started</a></li>
        <li><a href="https://eclipse.org/membership/" target="_self">Members</a></li>
        <li><a href="https://eclipse.org/projects/" target="_self">Projects</a></li>
        <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community <b class="caret"></b></a>
          <ul class="dropdown-menu">
           <li><a href="http://marketplace.eclipse.org">Marketplace</a></li>
           <li><a href="http://events.eclipse.org">Events</a></li>
           <li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li>
           <li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li>
           <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul></li>
           <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Participate <b class="caret"></b></a>
           <ul class="dropdown-menu"><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul></li><li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Working Groups <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://www.openmdm.org">OpenMDM</a></li></ul></li>
      
          <li class="dropdown eclipse-more hidden-xs">
            <a data-toggle="dropdown" class="dropdown-toggle">More<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li>
                <!- - Content container to add padding - ->
                <div class="yamm-content">
                  <div class="row">
                    <ul class="col-sm-8 list-unstyled"><li><p><strong>Community</strong></p></li><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Participate</strong></p></li><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Working Groups</strong></p></li><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://www.openmdm.org">OpenMDM</a></li></ul>                  </div>
                </div>
              </li>
            </ul>
          </li>
              </ul>
    </div>
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
      <span class="sr-only">Toggle navigation</span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      </button>
        <div class="wrapper-logo-mobile"><a class="navbar-brand visible-xs" href="https://eclipse.org/"><img class="logo-eclipse-default-mobile img-responsive" alt="logo" src="/eclipse.org-common/themes/solstice/public/images/logo/eclipse-800x188.png"/></a>
        </div>
      -->
      </div>
  </div>
</div>
    </div>
  </div>
</header>
    <section class="hidden-print default-breadcrumbs" id="breadcrumb">
      <div class="container">
        <h3 class="sr-only">Breadcrumbs</h3>
        <div class="col-xs-24">
          <ol class="breadcrumb"><li><a href="https://www.eclipse.org/">Home</a></li><li><a href="https://www.eclipse.org/cbi/">CBI</a></li><li class="active">CBI Downloads</li></ol>
        </div>
        
      </div>
    </section> <!-- /#breadcrumb --><main class="no-promo">
  <div class="novaContent container" id="novaContent">
<h1>CBI Downloads</h1>
</div>
</main> <!-- /#main-content-container-row --><p id="back-to-top">
  <a class="visible-xs" href="#top">Back to the top</a>
</p>


<!-- Beginning of primary custom content -->
<p>This is a high-level page for all CBI component downloads and software sites, when there are any for a component.</p>

<h3 id="sharedLicense">The Eclipse Standard Shared License</h3>
<p>There is no download, per se, in CBI for the <a href="http://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Ftasks%2Fpde_shared_license.htm">Shared License</a> but instead there is a p2 software repository:
<br /><a href="http://download.eclipse.org/cbi/updates/license/">http://download.eclipse.org/cbi/updates/license/</a><br />
That p2 repository can be used in targets or prereq repositories for builds to get the appropriate standard version
of the <a href="https://eclipse.org/legal/epl/notice.php">Eclipse Foundation Software User Agreement</a>
that is required to be built into features.</p>
<h3 id="p2repoAggregator">CBI p2repo Aggregator</h3>
<p><strong>IDE:</strong> For installation into IDEs, start a development IDE based on a Oxygen (2017) level Platform (Platform 4.7.x) and use the software repository at
<br /><a href="http://download.eclipse.org/cbi/updates/aggregator/ide/4.7/">http://download.eclipse.org/cbi/updates/aggregator/ide/4.7/</a><br /></p>
<p><strong>Headless:</strong> To use the Headless CLI version of the CBI aggregator, you can use the p2Director to create a product from the headless update site at
<br /><a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/">http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/</a></p>
<p>For Photon level development environments, the correct repository to use it the "4.8" level, namely
<br /><a href="http://download.eclipse.org/cbi/updates/aggregator/ide/4.8/">http://download.eclipse.org/cbi/updates/aggregator/ide/4.8/</a>, or 
<br /><a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.8/">http://download.eclipse.org/cbi/updates/aggregator/headless/4.8/</a></p>
<p>For convenience, you can <a href="./aggregatorLatest/">download the most recent "pre-built" CLI products.</a></p>
<p>For more detail, see the <a href="https://wiki.eclipse.org/CBI/aggregator/manual">CBI Aggregator Manual</a></p>
<h3 id="p2repoAnalyzer">CBI p2repo Analyzer</h3>
<p>Similar to the CBI Aggregator (but with just one repository) you can install into a Oxygen based IDE, or create a headless product. The repository URL is 
<br /><a href="http://download.eclipse.org/cbi/updates/analyzers/4.7/">http://download.eclipse.org/cbi/updates/analyzers/4.7/</a><br />
Or, as above, you can use the <a href="./analyzerLatest">latest pre-build p2analyze products</a>.</p>
<p>For more detail, see the wiki page for <a href="https://wiki.eclipse.org/CBI/p2repoAnalyzers/Repo_Reports">CBI p2repo Analyzers</a>.</p>

<!-- End of primary custom content -->

<!-- note: footer removed since seemed like "too much" for DL page -->

<!-- Placed at the end of the document so the pages load faster -->
<script src="/eclipse.org-common/themes/solstice/public/javascript/main.min.js"></script>

      <script type="text/javascript">

        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-910670-2']);
        _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>
</body>
</html>
