Tycho не использует целевой файл из проекта eclipse-target-definition без версии в pom
У меня проблема с механизмом Maven/Tycho для разрешения зависимостей из файла.target. Я следил за информацией на https://wiki.eclipse.org/Tycho/Target_Platform, но не получил ожидаемых результатов. Вот несколько фактов:
Целевой файл:
<target name="Eclipse Kepler Target" sequenceNumber="1424335573">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
<unit id="org.eclipse.equinox.p2.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.workspace.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.workspace.source.feature.group" version="0.0.0"/>
<unit id="org.eclipse.emf.eef.sdk-feature.feature.group" version="0.0.0"/>
<unit id="org.eclipse.draw2d.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.gmf.runtime.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.gmf.runtime.notation.sdk.feature.group" version="0.0.0"/>
<unit id="org.eclipse.acceleo.feature.group" version="0.0.0"/>
<unit id="org.eclipse.acceleo.source.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ocl.feature.group" version="0.0.0"/>
<unit id="org.eclipse.ocl.source.feature.group" version="0.0.0"/>
<repository id="kepler" location="http://korvm016.apac.bosch.com/updatesites/thirdparty/eclipse_4.3_kepler/"/>
</location>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
<unit id="com.google.inject" version="0.0.0"/>
<unit id="com.google.inject.source" version="0.0.0"/>
<unit id="com.google.inject.assistedinject.source" version="0.0.0"/>
<unit id="com.google.inject.assistedinject" version="0.0.0"/>
<unit id="com.google.inject.multibindings.source" version="0.0.0"/>
<unit id="com.google.inject.multibindings" version="0.0.0"/>
<unit id="com.google.guava" version="0.0.0"/>
<unit id="com.google.guava.source" version="0.0.0"/>
<unit id="javax.activation" version="0.0.0"/>
<unit id="javax.activation.source" version="0.0.0"/>
<unit id="org.aopalliance" version="0.0.0"/>
<unit id="org.apache.commons.cli" version="0.0.0"/>
<unit id="org.apache.commons.cli.source" version="0.0.0"/>
<unit id="org.apache.commons.collections" version="0.0.0"/>
<unit id="org.apache.commons.collections.source" version="0.0.0"/>
<unit id="org.apache.commons.exec" version="0.0.0"/>
<unit id="org.apache.commons.exec.source" version="0.0.0"/>
<unit id="org.apache.commons.httpclient" version="0.0.0"/>
<unit id="org.apache.commons.httpclient.source" version="0.0.0"/>
<unit id="org.apache.commons.io" version="0.0.0"/>
<unit id="org.apache.commons.io.source" version="0.0.0"/>
<unit id="org.apache.commons.lang" version="0.0.0"/>
<unit id="org.apache.commons.lang.source" version="0.0.0"/>
<unit id="org.junit" version="0.0.0"/>
<unit id="org.junit.source" version="0.0.0"/>
<unit id="org.hamcrest.core.source" version="0.0.0"/>
<unit id="org.hamcrest.core" version="0.0.0"/>
<unit id="org.hamcrest.generator.source" version="0.0.0"/>
<unit id="org.hamcrest.generator" version="0.0.0"/>
<unit id="org.hamcrest.integration.source" version="0.0.0"/>
<unit id="org.hamcrest.integration" version="0.0.0"/>
<unit id="org.hamcrest.library.source" version="0.0.0"/>
<unit id="org.hamcrest.library" version="0.0.0"/>
<unit id="org.hamcrest.text.source" version="0.0.0"/>
<unit id="org.hamcrest.text" version="0.0.0"/>
<unit id="org.hamcrest" version="0.0.0"/>
<unit id="org.mockito" version="0.0.0"/>
<unit id="org.mockito.source" version="0.0.0"/>
<unit id="org.objenesis" version="0.0.0"/>
<unit id="org.objenesis.source" version="0.0.0"/>
<unit id="ch.qos.logback.classic" version="0.0.0"/>
<unit id="ch.qos.logback.classic.source" version="0.0.0"/>
<unit id="ch.qos.logback.core" version="0.0.0"/>
<unit id="ch.qos.logback.core.source" version="0.0.0"/>
<unit id="ch.qos.logback.slf4j" version="0.0.0"/>
<unit id="ch.qos.logback.slf4j.source" version="0.0.0"/>
<unit id="org.slf4j.api" version="0.0.0"/>
<unit id="org.slf4j.api.source" version="0.0.0"/>
<repository id="orbit" location="http://korvm016.apac.bosch.com/updatesites/thirdparty/orbit-buildrepo-R20140525021250/"/>
</location>
</locations>
</target>
POM-файл для целевого модуля:
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.etas.congra.releng</groupId>
<artifactId>com.etas.congra.releng.targetplatform</artifactId>
<packaging>eclipse-target-definition</packaging>
</project>
У меня нет версии здесь, потому что я нашел страницу в Интернете, которая рассказывала, что версия в pom для eclipse-target-packaging не работает, и, фактически, указав версию, мы не смогли разрешить следующее Конфигурация в родительском поме используется для всех остальных модулей maven:
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<target>
<artifact>
<groupId>com.etas.congra.releng</groupId>
<artifactId>com.etas.congra.releng.targetplatform</artifactId>
<relativePath>../../releng/com.etas.congra.releng.targetplatform/pom.xml</relativePath>
</artifact>
</target>
</configuration>
</plugin>
</plugins>
Имея это, я получаю следующее сообщение об ошибке во время сборки maven:
[INFO] Scanning for projects...
[INFO] Computing target platform for MavenProject: com.etas.congra.releng:com.etas.congra.log:0.1.0-SNAPSHOT @ D:\ConGra_IDE_Luna_win64\git\congra\plugins\com.etas.congra.log\pom.xml
[INFO] Resolving dependencies of MavenProject: com.etas.congra.releng:com.etas.congra.log:0.1.0-SNAPSHOT @ D:\ConGra_IDE_Luna_win64\git\congra\plugins\com.etas.congra.log\pom.xml
[INFO] Cannot complete the request. Generating details.
[INFO] Cannot complete the request. Generating details.
[INFO] {osgi.ws=win32, osgi.os=win32, osgi.arch=x86_64, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR] Software being installed: com.etas.congra.log 0.1.0.qualifier
[ERROR] Missing requirement: com.etas.congra.log 0.1.0.qualifier requires 'bundle ch.qos.logback.classic 1.0.7' but it could not be found
[ERROR]
Он не может разрешить зависимости от артефактов из целевого файла, хотя цель работает должным образом в рабочей области Eclipse, и если все репозитории, упомянутые в целевых файлах, выражены как теги репозитория в файле pom, сборка также работает.
Кто-нибудь знает, что не так в моей конфигурации?
2 ответа
Когда вы конфигурируете артефакт целевой платформы, где либо groupId
, artifactId
, или же version
отсутствует, Тихо молча игнорирует эту конфигурацию. Это ошибка в Tycho - она должна завершиться ошибкой с явным сообщением об ошибке.
Так что вам нужно сослаться на eclipse-target-definition
модуль с версией. Если у вас есть настройка проекта, которая использует одну и ту же версию в каждом модуле, вы можете использовать ${project.version}
для этого (чтобы избежать ручной работы, когда вы используете плагин tycho-версии-плагина, который в настоящее время не обновляет конфигурацию целевой платформы). Если некоторые из проектов, которые наследуют конфигурацию target-platform от вашей родительской POM, используют другую версию, вам нужно указать целевой файл с явной версией. (Справочная информация: переменные в POM расширяются после наследования, поэтому ${project.version}
расширяется до версии дочернего проекта, а не до версии родительского POM, содержащей конфигурацию.)
Тот же вопрос, заданный и отвеченный в списке рассылки для пользователя Tycho:
https://dev.eclipse.org/mhonarc/lists/tycho-user/msg06323.html