2014-01-06 2 views
9

С сборкой maven/tycho для Nodeclipse Плагин Eclipse содержит новый репозиторий p2 для каждой версии.Комбинированные/агрегатные репозитории eclipse p2/расширяемый репозиторий p2

Релиз сделан на Bintray, который не позволяет обновлять файлы. Поэтому каждая версия входит в свою папку.

BaseFolder 
BaseFolder/VersionFolder1 
BaseFolder/VersionFolder2 
BaseFolder/VersionFolder3 

Можно ли иметь BaseFolder подготовленный сразу, как расширяемый хранилище p2, и VersionFolderN добавлены позже?

Так что для обновлений будет только один URL-адрес, а платформа Eclipse сможет обнаружить обновления в репозитории.

+0

На примере примера http://download.eclipse.org/datatools/updates/ перечислены все версии проекта Eclipse Data Tools Platform (DTP) http://www.eclipse.org/datatools/ (обратите внимание, что для пользователей (http://download.eclipse.org/datatools/updates/1.11) Указанный URL-адрес) –

+0

Действительно ли вы не можете редактировать индексные файлы? Если да, есть только довольно хакерские решения, которые предполагают угадать все возможные будущие выпуски. – oberlies

ответ

14

То, что вы ищете, представляет собой составной репозиторий p2. Вам просто понадобятся следующие два файла в папке базы:

  • compositeContent.xml со следующим содержанием:

    <?xml version='1.0' encoding='UTF-8'?> 
    <?compositeMetadataRepository version='1.0.0'?> 
    <repository name='Project XYZ Releases Repository' type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository' version='1.0.0'> 
        <properties size='1'> 
         <property name='p2.atomic.composite.loading' value='true'/> 
        </properties> 
        <children size='3'> 
         <child location='VersionFolder1'/> 
         <child location='VersionFolder2'/> 
         <child location='VersionFolder3'/> 
        </children> 
    </repository> 
    
  • compositeArtifacts.xml со следующим, похожим содержанием:

    <?xml version='1.0' encoding='UTF-8'?> 
    <?compositeArtifactRepository version='1.0.0'?> 
    <repository name='Project XYZ Releases Repository' type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository' version='1.0.0'> 
        <properties size='0'> 
        </properties> 
        <children size='3'> 
         <child location='VersionFolder1'/> 
         <child location='VersionFolder2'/> 
         <child location='VersionFolder3'/> 
        </children> 
    </repository> 
    

Когда выпущена новая версия, просто добавьте новую папку в качестве дочерней в обоих файлах.

Эти два файла также могут быть сжаты как ZIP и названы compositeContent.jar и compositeArtifacts.jar для сохранения пропускной способности сети. Однако это делает редактирование файлов немного менее практичным.

Репозитории с одновременным выпуском Eclipse также используют этот подход. Например, на момент написания этого сообщения Eclipse Luna repository содержит только исходную версию и SR 1 (см. compositeContent, compositeArtifacts). SR 2 будет добавлен позже, так что пользователи смогут получать обновления без необходимости настройки нового URL-адреса репозитория.

+0

Это превосходное решение проблемы. Должно ли все «VersionFolder» существовать с самого начала? Могут ли 'compositeContent.jar' и' compositeArtifacts.jar' быть вместе 'artifacts.jar' и' content.jar' в той же папке http://dl.bintray.com/nodeclipse/nodeclipse/? Это вопросы для моего исследования. Огромное спасибо. –

+0

Страна чудес! Этот пример уже работает! 'https: // raw.github.com/Enide/eclipse-p2-composite-repository/master /' –

+0

Если вы поместите 'compositeContent/Artifacts.jar' и' content/artifacts.jar' в одну и ту же папку, p2/Tycho будет рассматривать только. По умолчанию будет использоваться только последний. – oberlies

Смежные вопросы