Tycho не может разрешить зависимость от пакета, хотя он присутствует в целевом файле.

Я настроил сборку Tycho для нескольких плагинов, функции, сайта и цели, определенных в файле pom.xmls.

Я могу запустить свое приложение из Eclipse IDE. Кроме того, mvn clean package отлично строится.

Однако, когда я добавляю подключаемый модуль, которому требуется ca.odell.glazedlists (который также находится в моем целевом определении), я все еще могу запустить его из среды IDE, но сборка mvn clean package завершается ошибкой. Есть идеи, что делать? Далее следуют выходные данные Maven и файл pom.xml.

Выход Maven

[INFO] Computing target platform for MavenProject: lumo:microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\microsoftsqlserver\pom.xml
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/ (0B at 0B/s)
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/ (128B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Adding repository http://download.eclipse.org/releases/kepler
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/201306260900/ (0B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/201306260900/ (365B at 0B/s)
[INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/kepler/ (0B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/kepler/ (116B at 0B/s)
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/ (0B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/ (128B at 0B/s)
[INFO] Adding repository http://download.eclipse.org/releases/kepler
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/201306260900/ (0B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Fetching p2.index from http://download.eclipse.org/releases/kepler/201306260900/ (365B at 0B/s)
[INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/kepler/ (0B at 0B/s)
[INFO] 1 operation remaining.
[INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/kepler/ (116B at 0B/s)
[WARNING] Target location type: Directory is not supported
[WARNING] Target location type: Profile is not supported
[WARNING] Target location type: Directory is not supported
[WARNING] De-selecting bundles in a target definition file is not supported. See http://wiki.eclipse.org/Tycho_Messages_Explained#Target_File_Include_Bundles for alternatives.
[INFO] Resolving dependencies of MavenProject: lumo:microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\microsoftsqlserver\pom.xml
[INFO] Resolving class path of MavenProject: lumo:microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\microsoftsqlserver\pom.xml
[INFO] Computing target platform for MavenProject: lumo:org.eclipse.gemini.dbaccess.microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\org.eclipse.gemini.dbaccess.microsoftsqlserver\pom.xml
[INFO] Resolving dependencies of MavenProject: lumo:org.eclipse.gemini.dbaccess.microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\org.eclipse.gemini.dbaccess.microsoftsqlserver\pom.xml
[INFO] Resolving class path of MavenProject: lumo:org.eclipse.gemini.dbaccess.microsoftsqlserver:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\org.eclipse.gemini.dbaccess.microsoftsqlserver\pom.xml
[INFO] Computing target platform for MavenProject: lumo:lumo.settings:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.settings\pom.xml
[INFO] Resolving dependencies of MavenProject: lumo:lumo.settings:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.settings\pom.xml
[INFO] Resolving class path of MavenProject: lumo:lumo.settings:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.settings\pom.xml
[INFO] Computing target platform for MavenProject: lumo:lumo.components:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.components\pom.xml
[INFO] Resolving dependencies of MavenProject: lumo:lumo.components:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.components\pom.xml
[INFO] Resolving class path of MavenProject: lumo:lumo.components:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.components\pom.xml
[INFO] Computing target platform for MavenProject: lumo:lumo.osgi.service.dialog:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.osgi.service.dialog\pom.xml
[INFO] Resolving dependencies of MavenProject: lumo:lumo.osgi.service.dialog:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.osgi.service.dialog\pom.xml
[INFO] Resolving class path of MavenProject: lumo:lumo.osgi.service.dialog:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.osgi.service.dialog\pom.xml
[INFO] Computing target platform for MavenProject: lumo:lumo.osgi.service.dialog.impl:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.osgi.service.dialog.impl\pom.xml
[INFO] Resolving dependencies of MavenProject: lumo:lumo.osgi.service.dialog.impl:0.0.1-SNAPSHOT @ D:\Java7\lumoE4Workspace\lumo.osgi.service.dialog.impl\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, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: lumo.osgi.service.dialog.impl 0.0.1.qualifier
[ERROR]   Missing requirement: lumo.core.runtime 0.0.1.qualifier requires 'bundle ca.odell.glazedlists 1.9.0' but it could not be found
[ERROR]   Cannot satisfy dependency: lumo.osgi.service.dialog.impl 0.0.1.qualifier depends on: bundle lumo.core.runtime 0.0.1
[ERROR] 
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from lumo.core.runtime 0.0.1.qualifier to bundle ca.odell.glazedlists 1.9.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.event 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.gui 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.matchers 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.util.concurrent 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from lumo.core.runtime 0.0.1.qualifier to bundle ca.odell.glazedlists 1.9.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.event 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.gui 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.matchers 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.util.concurrent 0.0.0.", "No solution found because the problem is unsatisfiable."]
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from lumo.core.runtime 0.0.1.qualifier to bundle ca.odell.glazedlists 1.9.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.event 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.gui 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.matchers 0.0.0.", "Unable to satisfy dependency from org.eclipse.nebula.widgets.nattable.extension.glazedlists 1.0.1.201307031725 to package ca.odell.glazedlists.util.concurrent 0.0.0.", "No solution found because the problem is unsatisfiable."]
    at org.eclipse.tycho.p2.resolver.AbstractResolutionStrategy.newResolutionException(AbstractResolutionStrategy.java:98)
    at org.eclipse.tycho.p2.resolver.ProjectorResolutionStrategy.resolve(ProjectorResolutionStrategy.java:88)
    at org.eclipse.tycho.p2.resolver.AbstractResolutionStrategy.resolve(AbstractResolutionStrategy.java:63)
    at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveDependencies(P2ResolverImpl.java:126)
    at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveDependencies(P2ResolverImpl.java:81)
    at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.doResolvePlatform(P2TargetPlatformResolver.java:374)
    at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.resolveDependencies(P2TargetPlatformResolver.java:350)
    at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:109)
    at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:82)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:274)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    ... 11 more

пом.xml

<?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>lumo</groupId>
    <artifactId>lumo-e4</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <tycho.version>0.18.0</tycho.version>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <encoding>UTF-8</encoding>
    </properties>
    <modules>
        <module>lumo.target</module>


        <module>microsoftsqlserver</module>
        <module>org.eclipse.gemini.dbaccess.microsoftsqlserver</module>


        <module>lumo.settings</module>
        <module>lumo.components</module>
        <module>lumo.osgi.service.dialog</module>
        <module>lumo.osgi.service.dialog.impl</module>

        <module>lumo.osgi.service.notification</module>
        <module>lumo.osgi.service.notification.impl</module>


        <module>lumo.core.runtime</module>
        <module>lumo.rcp</module>
        <module>lumo.model</module>
        <module>lumo.site</module>
        <module>lumo.feature</module>

    </modules>
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-maven-plugin</artifactId>
                <version>${tycho.version}</version>
                <extensions>true</extensions>
            </plugin>

            <!-- Use custom target platform -->
            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>target-platform-configuration</artifactId>
                <version>${tycho.version}</version>
                <configuration>
                    <target>
                        <artifact>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>lumo.target</artifactId>
                            <version>${project.version}</version>
                        </artifact>
                    </target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>kepler</id>
            <layout>p2</layout>
            <url>http://download.eclipse.org/releases/kepler</url>
        </repository>
    </repositories>
</project>

person lumo    schedule 11.07.2013    source источник
comment
пакет, который не найден, называется ca.odell.glazedlists. и когда я просматриваю свою цель (контент), она доступна и проверяется. у меня есть одна цель для всех моих плагинов. никаких ошибок не отображается в ide. валидация говорит ок!   -  person lumo    schedule 12.07.2013
comment
Журнал должен содержать сообщение об ошибке в более удобочитаемом формате (где каждой строке предшествует [ERROR]). Пожалуйста, опубликуйте это полное сообщение об ошибке, а не только две строки в верхней части вашего сообщения. Также: Обратитесь к справке по редактированию о том, как вставить дословный код/блок XML.   -  person oberlies    schedule 25.07.2013
comment
я читал справку по форматированию, но в прошлый раз это просто не работало (сегодня работает без проблем :-/)   -  person lumo    schedule 25.07.2013


Ответы (3)


Похоже, что ваша целевая платформа содержит ca.odell.glazedlists в Eclipse, но не в Tycho, потому что этот пакет включен через механизм, который не поддерживается Tycho. В журнале есть предупреждение, которое говорит вам об этом:

[WARNING] Target location type: Directory is not supported
[WARNING] Target location type: Profile is not supported
[WARNING] Target location type: Directory is not supported

Вам необходимо изменить целевой файл определения, чтобы он использовал только местоположения «Software Site».

person oberlies    schedule 13.07.2013
comment
постараюсь как можно скорее (загрузить прямо сейчас) спасибо, это кажется правдоподобным! - person lumo; 30.07.2013

Также есть возможность:

  1. Вы создали свою целевую платформу.
  2. Опубликуйте его в локальном репозитории maven p2.
  3. Добавлены списки ca.odell.glazedlists для целевой платформы (но забыли снова опубликовать целевую платформу).
  4. Теперь из Eclipse ваш пакет в настоящее время находится внутри приобретенной целевой платформы. Однако вне Eclipse команда mvn clean package по-прежнему ссылается на старое целевое определение, опубликованное в начале.
  5. Итак, попробуйте снова опубликовать целевую платформу, а затем mvn clean package.
person Shailesh Pratapwar    schedule 22.07.2013
comment
как опубликовать целевую платформу в локальном репозитории maven? все, что я сделал, это чистый пакет mvn (из родительской папки), больше ничего. - person lumo; 22.07.2013
comment
что, безусловно, нужна другая цель в вашем maven pom для публикации целевой платформы. Однако, прежде чем сделать это, можете ли вы просто проверить, ссылаетесь ли вы на правильную версию вашей зависимости, которая доступна на вашей целевой платформе, и на ту, которую вы добавили в список необходимых плагинов? - person Shailesh Pratapwar; 22.07.2013
comment
я имею в виду версию 1.9.0 ca.odell.glazedlists в моей цели и в моих необходимых плагинах - person lumo; 23.07.2013
comment
Невозможно удовлетворить зависимость от lumo.core.runtime 0.0.1.qualifier --> Я предполагаю, что lumo.core.runtime — это ваш собственный пакет, находящийся на вашей целевой платформе. Этот пакет, похоже, зависит от пакета glazedlist. Проверьте, правильно ли совпадают версии здесь. - person Shailesh Pratapwar; 23.07.2013
comment
моя целевая платформа содержит только сторонние функции/плагины. мои собственные пакеты (доступные в форме src и включенные в pom.xml) не включены в целевую платформу. Я проверил версии везде. и все говорят 1.9.0 - person lumo; 26.07.2013

в конфигурации tycho, если вы настраиваете таким образом:

<plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <configuration>
                <pomDependencies>consider</pomDependencies>
            </configuration>
        </plugin>

он разрешит зависимости от зависимостей, настроенных в вашем файле pom. В противном случае будут разрешены зависимости от записей в вашем файле МАНИФЕСТА.

person xtrycatchx    schedule 22.07.2013
comment
не должен ли он использовать мой lumo.target, который я написал в своем pom.xml после строки ‹!-- Использовать пользовательскую целевую платформу --›? - person lumo; 22.07.2013
comment
Нет. Разрешение зависимостей tycho осуществляется через pom-first (см. мой предыдущий ответ) или manifest-first. подробности можно найти по этой ссылке. - person xtrycatchx; 23.07.2013
comment
@xtrycatchx протестировал вашу конфигурацию, но она не удалась. - person lumo; 26.07.2013