<!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="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 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
  _ was ambiguous so had to use brackets there, such as  _I20170727-1607_xxx.
-->
<h3>Download or install CBI Aggregator</h3>
<p>These are the results of build: <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607/buildResults.html">I20170727-1607</a></p>
<p>For general use in an IDE, you simply want to add the composite software site of </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 />
  to get the latest updates from this &quot;4.7&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="http://download.eclipse.org/cbi/updates/aggregator/ide/4.7/I20170727-1607">http://download.eclipse.org/cbi/updates/aggregator/ide/4.7/I20170727-1607</a></li>
<li>Headless CLI repo: <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607">http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607</a></li>
</ul>
<h4>Downloadable pre-assembled CLI products</h4>
<ul>
<li>Windows: <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607/headless_I20170727-1607_win32.win32.x86_64.zip">headless_I20170727-1607_win32.win32.x86_64.zip</a></li>
<li>Linux: <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607/headless_I20170727-1607_linux.gtk.x86_64.tar.gz">headless_I20170727-1607_linux.gtk.x86_64.tar.gz</a></li>
<li>Mac OSX: <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607/headless_I20170727-1607_macosx.cocoa.x86_64.tar.gz">headless_I20170727-1607_macosx.cocoa.x86_64.tar.gz</a></li>
</ul>
<h4>Release engineering</h4>
<p>Check the <a href="http://download.eclipse.org/cbi/updates/aggregator/headless/4.7/I20170727-1607/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>
