Сборка продукта Eclipse с помощью Maven/Tycho из функций в удаленных репозиториях

Я отвечаю за сборку проекта на основе Eclipse на основе Maven/Tycho. Фактически проект состоит из двух подпроектов Pa и Pb, каждый из которых строится отдельно. Pa содержит ряд функций и подключаемых модулей, собранных в репозиторий p2. Pb содержит еще несколько функций, а также продукт, все зависит от функций Pa.

Проблема возникает, когда я пытаюсь создать продукт Pb из функций в Pb, а также функций в Pa. Таким образом, мой файл продукта включает в себя такие функции:

<features>
  <feature id="de.cau.cs.kieler.synccharts.feature" version="0.0.0"/>
  <feature id="de.cau.cs.kieler.kaom.feature" version="0.0.0"/>
</features>

В то время как первая функция исходит из проекта Pb, вторая — из Pa и требует, чтобы Maven/Tycho загружал ее из репозитория p2. Репозиторий становится известен системе сборки через следующее определение в моем родительском файле pom.xml:

<profiles>
  <profile>
    <id>juno42</id>
    <properties>
      <tycho-version>0.17.0</tycho-version>
      <targetJdk>1.5</targetJdk>
    </properties>

    <repositories>
      <repository>
        <id>p2.pa</id>
        <layout>p2</layout>
        <url>repository_url_of_project_pa</url>
      </repository>
    </repositories>
  </profile>
</profiles>

Когда я пытаюсь собрать Pb (после того, как ранее собрал Pa и опубликовал сайт обновления по указанному выше URL-адресу), я получаю что-то вроде следующего сообщения об ошибке:

[ERROR]   Software being installed: de.cau.cs.kieler.product 0.8.0.qualifier
[ERROR]   Missing requirement: de.cau.cs.kieler.kaom.feature.feature.group 0.6.0.201304190326 requires 'de.cau.cs.kieler.core.model.gmf [0.2.2.201304190326]' but it could not be found
[ERROR]   Cannot satisfy dependency: de.cau.cs.kieler.product 0.8.0.qualifier depends on: de.cau.cs.kieler.kaom.feature.feature.group 0.0.0

Maven/Tycho, очевидно, нашли функцию от Pa, которая должна быть включена в конечный продукт, но не смогли найти подключаемые модули, из которых эта функция состоит. Я дважды проверил, что плагины действительно опубликованы в репозитории Pa p2 и что требуемые версии совпадают.

Есть ли что-то, чего я не вижу? Разве Tycho не сможет найти плагины, из которых состоит функция, если она уже найдена? Любая помощь в решении этой проблемы приветствуется. :)

Кстати, в нашем проекте Tycho вычисляет зависимости на основе файлов MANIFEST.MF подключаемых модулей, а не на основе зависимостей, определенных в файлах pom.xml. Я проверил это, когда столкнулся с проблемой, что Tycho не может смешивать два реактора в одном билде.


person Christoph Daniel    schedule 22.04.2013    source источник


Ответы (2)


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

Вы должны запустить сборку в режиме отладки (-X) и проверить конфигурацию целевой платформы, распечатанную Tycho.

person oberlies    schedule 06.05.2013

Я заметил одну вещь: хотя вы ссылаетесь на версию 0.8.0.qualifier

in your product, the build complains about another version 0.6.0.qualifier

[ОШИБКА] Отсутствует требование: de.cau.cs.kieler.kaom.feature.feature.group 0.6.0.201304190326 требуется «de.cau.cs.kieler.core.model.gmf [0.2.2.201304190326]», но это не может быть нашел

Кроме того, не используйте «.qualifier» в ссылках на версии, если только они не созданы в том же реакторе, поскольку .qualifier заменен текущей меткой времени сборки. Попробуйте вместо этого использовать «0.0.0».

Это похоже на известную ошибку Tycho https://bugs.eclipse.org/bugs/show_bug.cgi?id=373817

person jsievers    schedule 23.04.2013
comment
Упс, несоответствие версии было ошибкой с моей стороны при написании текста. Я исправил это. - person Christoph Daniel; 23.04.2013
comment
Теперь я заменил версии функций, включенные в продукт, на 0.0.0. Проблема все еще сохраняется. Tycho не может найти ни один из подключаемых модулей, включенных в de.cau.cs.kieler.kaom.feature.feature.group, несмотря на то, что они доступны в том же репозитории p2, что и эта функция. - person Christoph Daniel; 23.04.2013