Tycho не может разрешить ссылку от продукта к функции затмения из другой сборки реактора - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть две сборки реактора:

Первый строит несколько пакетов и соответствующую функцию. После успешного clean install эта функция находится в моем локальном репозитории Maven. Tycho также генерирует метаинформацию p2 ... -p2artifacts.xml и ... -p2metadata.xml

Вторая сборка содержит продукт, основанный на функциях, который ссылается на функцию, встроенную в первый реактор. При попытке clean install Tycho жалуется на нерешенную функцию - одну из других сборок реактора.

* * 1010

Не удалось выполнить цель org.eclipse.tycho: tycho-p2-repository-plugin: 0.12.0: assembly-repository [...] ["Невозможно удовлетворить зависимость от TestApp2 1.0.0 до my.testlib.feature.feature.group [1.0. 0,201109081051] ".]

Как видите, я использую Tycho 0.12.0, который должен разрешать артефакты локального репозитория maven, когда установлен флаг pomDependencies=consider, что я и сделал.

Я посмотрел в сгенерированной метаинформации p2 моего локального репозитория Maven и обнаружил небольшую разницу в версии функции. Версия функции в файле p2artifacts.xml следующая:

версия = '1.0.0.201109071453'

Сравнение двух версий

1.0.0.201109081051 // what tycho looks for
1.0.0.201109071453 // what's in my local mvn repo

есть только разница в последнем бите, которая может быть отметкой времени.

Кто-нибудь знает, почему Тихо жалуется на неразрешенную функцию? Имеет ли значение метка времени?

Обновление: Поскольку временная метка второй сборки меняется при каждой сборке, я предполагаю, что это текущая временная метка.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Возможно, вы используете ".qualifier" в качестве суффикса версии при ссылке на функцию в вашем .product.«.qualifier» заменяется временной меткой сборки по умолчанию, так что это, вероятно, не то, что вы хотите.Попробуйте вместо этого использовать «0.0.0» (= последний).

0 голосов
/ 27 ноября 2014

В вашем файле продукта указана версия 1.0.0.qualifier в ссылке на вашу функцию в другом реакторе.

Из-за ошибки в Tycho ( ошибка 373817 ) qualifier в этом случае литерал не заменяется правильной временной меткой: Tycho использует временную метку текущей сборки (как вы правильно заметили) вместо временной метки из версии функции, доступной на целевой платформе.

КакЯн уже указывал, что обходной путь для этой проблемы - использовать версию 0.0.0 в ссылке на функцию.

Как и во всех ссылках на «включение» (т. Е. Функции включают «плагины» и продукты«включает» функции), Tycho заменит эту версию фактической версией с целевой платформы.(Примечание. Артефакты из предыдущих сборок Tycho с mvn clean install являются автоматически частью целевой платформы .) Но с 0.0.0 это будет работать правильно даже в случае двух реакторов.


Для справки: В более новых версиях Tycho сообщение об ошибке в случае установки, описанной в вопросе, отличается:

Не удалось выполнить цель org.eclipse.tycho:tycho-p2-publisher-plugin: 0.22.0: publish-products (...): исключение при публикации product (...) \ test.product: публикация result: [включенный элемент my.testlib.feature.feature.group1.0.0.201109081051 отсутствует.Невозможно определить фильтр для требования к этому элементу.]

Это сообщение появляется из-за той же ошибки Tycho, и обходной путь тот же.

...