2013-04-26 3 views
0

Я использую Eclipse Tycho для создания моего приложения RCP с зависимостями GMF.Eclipse Tycho не в состоянии разрешить правильную зависимость

Я получаю следующее сообщение об ошибке -

[ERROR] Internal error: java.lang.RuntimeException: Could not download artifacts from any repository 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.emf.core,1.4.1.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.emf.commands.core,1.4.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.emf.ui.properties,1.5.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui,1.6.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.properties,1.4.2.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.providers,1.5.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.providers.ide,1.2.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.render,1.6.0.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.resources.editor,1.4.1.v20120514-1615 
[ERROR] osgi.bundle,org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide,1.2.1.v20120514-1615 

Я задав следующую зависимость в Manifest.mf -

org.eclipse.gmf.runtime.emf.core;bundle-version="1.4.1", 
org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.4.0", 
org.eclipse.gmf.runtime.emf.ui.properties;bundle-version="1.5.0", 
org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0", 
org.eclipse.gmf.runtime.diagram.ui.properties;bundle-version="1.4.2", 
org.eclipse.gmf.runtime.diagram.ui.providers;bundle-version="1.5.0", 
org.eclipse.gmf.runtime.diagram.ui.providers.ide;bundle-version="1.2.0", 
org.eclipse.gmf.runtime.diagram.ui.render;bundle-version="1.6.0", 
org.eclipse.gmf.runtime.lite.svg;bundle-version="1.0.0", 
org.eclipse.gmf.runtime.diagram.ui.resources.editor;bundle-version="1.4.1", 
org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide;bundle-version="1.2.1", 

Я при условии расположения хранилища для GMF расслоения как -

<repository> 
    <id>gmf-runtime</id> 
    <url>http://download.eclipse.org/modeling/gmp/gmf-runtime/updates/releases</url> 
    <layout>p2</layout> 
</repository> 

Репозиторий P2 имеет все вышеперечисленные JAR. Единственное различие заключается в том, что почему-то Tycho ищет .v20120514-1615 отборочный. Однако в репозитории P2 есть .201302191707 квалификатор. Не уверен, почему Tycho ищет этот конкретный квалификатор и не разрешает последнюю версию.

+0

Кажется, что версии .v20120514-1615 также находятся в вашей целевой платформе. Некоторые другие репозитории p2, которые вы настроили, как представляется, содержат устанавливаемые модули gmf (см. Content.jar/content.xml), но не соответствующие артефакты. – oberlies

+0

@oberlies: Просто интересно, есть ли способ отслеживать репо P2, у которого есть эта устанавливаемая единица? Может быть, флаг отладки maven/tycho? – Pushkar

+1

'-Dtycho.debug.resolver = true' выводит все IU на [целевую платформу] (http://wiki.eclipse.org/Tycho/Target_Platform#Effective_content_of_the_target_platform), но AFAIK не говорит, какие p2-репозитории содержимое происходит. Не стесняйтесь, чтобы открыть это [запрос улучшения] (https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Tycho). – oberlies

ответ

2

Кажется, оригинальная P2 Repo была повреждена. Проблема заключается в том, что Tycho пытается индексировать все репо P2, даже если плагины не ссылаются. Чтобы решить эту проблему, что сделал -

  1. Открыть файл .product и экспортировать продукт
  2. Скопируйте «хранилище» папки из экспортируемых артефактов продукта и поместите его в общей папке
  3. В теге в Maven pom.xml указывает местоположение этого репозитория вместо внешних репозиториев. Все будущие строения Tycho будут использовать этот репозиторий

Таким образом, размер репо небольшой и все проблемы с сборкой разрешены.

+0

Вы имеете в виду «Tycho пытается проиндексировать весь репозиторий P2, даже если на _.jars_ не ссылаются»? –

+0

@PaulVerest: К сожалению, да. Но индексирование по существу означает, что он проверяет файл content.jar из репозитория P2 и видит, можно ли все решить. Все работает нормально, пока репозиторий P2 правильно настроен. Лучший способ, который я нашел, - это зеркальное отображение репозиториев на наших собственных серверах (возможно, есть лучший способ). – Pushkar