Ошибка сборки Tycho: "... требуется пакет... но он не найден"

У нас есть приложение-плагин Eclipse Luna, которое мы пытаемся создать с помощью Tycho. Когда мы пытаемся сделать mvn clean verifyмы получаем этот тип сообщения:

[ERROR]  Cannot resolve project dependencies:
[ERROR]   Software being installed: our.app 1.0.0.qualifier
[ERROR]   Missing requirement: our.app 1.0.0.qualifier requires 'bundle org.eclipse.core.runtime 3.7.0' but it could not be found

Когда мы просматриваем журналы, выясняется, что любой требуемый плагин Eclipse выдаст нам эту ошибку, и что это всего лишь первый элемент в списке на MANIFEST.MF для проверяемого плагина.

Я смотрел на другие вопросы, но, похоже, ни один из них не касается именно этой проблемы. Любые предложения будут ценны.

MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Our App
Bundle-SymbolicName: our.app;singleton:=true
Built-By: Our Team (2014)
Bundle-ClassPath: .,
 <some jars>
Bundle-Vendor: Our Team
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0",
 org.eclipse.ui;bundle-version="3.7.0",
 org.eclipse.ui.ide;bundle-version="3.7.0",
 org.eclipse.core.resources;bundle-version="3.7.0",
 org.eclipse.ui.forms;bundle-version="3.6.0",
 org.eclipse.wst.sse.ui;bundle-version="1.3.0",
 org.eclipse.jface.text;bundle-version="3.8.100",
 org.eclipse.ui.workbench.texteditor;bundle-version="3.8.101",
 org.eclipse.ui.views;bundle-version="3.6.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Version: 1.0.0.qualifier

2 ответа

Решение

Я получаю похожую ошибку, если я удаляю <repository>-тег из пом. Без этой информации Tycho не знает, где можно скачать необходимые пакеты. Поэтому вы должны добавить следующий фрагмент к вашему пом:

<repository>
   <id>eclipse-indigo</id>
   <url>http://download.eclipse.org/releases/indigo</url>
   <layout>p2</layout>
</repository>

Я скопировал фрагмент отсюда, для получения дополнительной информации смотрите здесь.

Tycho читает ваши файлы MANIFEST.MF и feature.xml, чтобы найти зависимости ваших плагинов, и добавляет их (временно) в ваши POM, которые используются Maven для выполнения сборки. Идея Tycho - поддерживать зависимости исключительно в файлах MANIFEST.MF и feature.xml, освобождая вас от необходимости добавлять их также в POM. Однако вам все еще нужно добавить соответствующий репозиторий, обычно в родительском POM, в котором можно найти зависимые плагины. Это явно отсутствует в ваших POM.

Другие вопросы по тегам