<!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 Aggregator Repositories and 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 Aggregator Repositories and 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 Aggregator Repositories and 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="https://www.eclipse.org/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="https://marketplace.eclipse.org">Marketplace</a></li>
           <li><a href="https://events.eclipse.org">Events</a></li>
           <li><a href="https://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="https://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="https://iot.eclipse.org">Internet of Things</a></li><li><a href="https://locationtech.org">LocationTech</a></li><li><a href="https://lts.eclipse.org">Long-Term Support</a></li><li><a href="https://polarsys.org">PolarSys</a></li><li><a href="https://science.eclipse.org">Science</a></li><li><a href="https://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="https://marketplace.eclipse.org">Marketplace</a></li><li><a href="https://events.eclipse.org">Events</a></li><li><a href="https://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="https://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="https://iot.eclipse.org">Internet of Things</a></li><li><a href="https://locationtech.org">LocationTech</a></li><li><a href="https://lts.eclipse.org">Long-Term Support</a></li><li><a href="https://polarsys.org">PolarSys</a></li><li><a href="https://science.eclipse.org">Science</a></li><li><a href="https://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 Aggregator Repositories and Downloads</li></ol>
        </div>
        
      </div>
    </section> <!-- /#breadcrumb --><main class="no-promo">
  <div class="novaContent container" id="novaContent">
<h1>CBI Aggregator Repositories and 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 -->
<!-- Note: since we are doing "html" (for now) the following variables must be substitued before or during writing 
     The "writing" of this file is done in "deploy.sh" script. The "solstice" parts of this file, 
     are the same as used in /cbi/downloads/index.html 
     except for the title on Breadcrumb, above.
  updateRelease  
     is such as "4.6", "4.7", etc. The main stream of Eclipse Platform that this aggregator goes with.
  buildId
     standard build id such as I20170106-2101. 
  DLPath
     main "uri" to Aggregator Repositories., such as download.eclipse.org/cbi/updates/aggregator
     This should be constant on "eclipse.org", but in case someone is doing a "local build", 
     they might want to override it, if their local builds reside else where. 
  Note: deliberatly written as conforming PHP variables, so that later we could have this template as a standard PHP file, and simply 'include' 
  a file with the two php variables defined. Except, it turned out, in "file names" the use of
  _I20200825-1209_xxx was ambiguous so had to use brackets there, such as  _I20200825-1209_xxx.
-->
<h3>Download or install CBI Aggregator</h3>
<p>These are the results of build: <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209/buildResults.html">I20200825-1209</a></p>
<p>For general use in an IDE, you simply want to add the composite software site of </br>
<a href="https://download.eclipse.org/cbi/updates/aggregator/ide/4.13">https://download.eclipse.org/cbi/updates/aggregator/ide/4.13</a><br />
  to get the latest updates from this &quot;4.13&quot; stream.
  </p>
  <p>Normally, the latest 
  three builds are kept in the composite repositories, so that gives some ability to "revert" 
  an update, as long as there has not been three published builds since it was updated. 
</p>
<h4>Simple repos from this build</h4>
<ul>
<li>IDE repo: <a href="https://download.eclipse.org/cbi/updates/aggregator/ide/4.13/I20200825-1209">https://download.eclipse.org/cbi/updates/aggregator/ide/4.13/I20200825-1209</a></li>
<li>Headless CLI repo: <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209">https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209</a></li>
</ul>
<h4>Downloadable pre-assembled CLI products</h4>
<ul>
<li>Windows: <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209/headless_I20200825-1209_win32.win32.x86_64.zip">headless_I20200825-1209_win32.win32.x86_64.zip</a></li>
<li>Linux: <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209/headless_I20200825-1209_linux.gtk.x86_64.tar.gz">headless_I20200825-1209_linux.gtk.x86_64.tar.gz</a></li>
<li>Mac OSX: <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209/headless_I20200825-1209_macosx.cocoa.x86_64.tar.gz">headless_I20200825-1209_macosx.cocoa.x86_64.tar.gz</a></li>
</ul>
<h4>Release engineering</h4>
<p>Check the <a href="https://download.eclipse.org/cbi/updates/aggregator/headless/4.13/I20200825-1209/reporeports">"repo reports"</a> from this build.</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>
