Круговые зависимости в Eclipse Platform - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь добавить платформу Eclipse в свой проект Maven и наткнулся на что-то очень странное.

Существует плагин org.eclipse.swt, который имеет зависимость org.eclipse.swt.${osgi.platform}, где ${osgi.platform} может быть любым из следующих:

  • cocoa.macosc.cocoa
  • gtk.linux.aarch64
  • win32.win32.x86_64

Однако, если вы проверите pom.xml из org.eclipse.swt.win32.win32.x86_64, вы узнаете, что этот проект имеет зависимость от org.eclipse.swt. Который образует хороший круг зависимости, что недопустимо ни в Maven, ни в OSGi.

Следовательно, я получаю StackOverflowError, но только если я пытаюсь использовать maven-dependency-plugin с -Dosgi.platform=win32.win32.x86_64.

Если я не использую этот параметр, я получаю следующее исключение:

No versions available for org.eclipse.platform:org.eclipse.swt.gtk.linux.aarch64:jar:[3.105.2,3.105.2]

(что, вероятно, нормально, потому что я думаю, что Linux является значением по умолчанию, но оно не относится ко мне, так как у меня есть ПК с Windows.)

Я тоже не могу исключить зависимость, например, с:

        <dependency>
            <groupId>org.eclipse.platform</groupId>
            <artifactId>org.eclipse.swt</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.platform</groupId>
                    <artifactId>org.eclipse.swt.gtk.linux.aarch64</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

При таком подходе я получаю те же сообщения об ошибках, что и выше.

Мне интересно, как ребята из Eclipse даже смогли выпустить этот беспорядок, но что более важно: как мне построить проект Maven с круговыми зависимостями, подобными этому?

1 Ответ

0 голосов
/ 09 января 2019

Вы смотрите не в том месте. Артефакты Eclipse публикуются в репозиториях Eclipse p2. Кроме того, некоторые артефакты Eclipse будут опубликованы в репозиториях Maven для использования в простых (не основанных на Eclipse) Java-приложениях , которые нельзя использовать для создания приложений на основе Eclipse. Кажется, что-то пошло не так при публикации Eclipse SWT в Maven Central, что вызвало циклические зависимости. Пожалуйста, сообщите об этом Eclipse.

Пакеты Eclipse IDE построены с подключаемым модулем Maven Tycho . См., Например, файл pom.xml для платформы Eclipse или здесь parent pom.xml для всех пакетов IDE . Tycho использует одно или несколько хранилищ Eclipse p2 для разрешения зависимостей. Например, репозиторий Maven не будет работать для разрешения Import-Package зависимостей или конфигураций продукта. В репозитории Maven версия артефакта имеет версию, в то время как в репозитории p2 также пакеты Java с одним и тем же JAR могут иметь разные версии. В Maven Tycho pom.xml должны быть указаны только репозитории p2, зависимости уже объявлены в файлах META-INF/MANIFEST.MF, feature.xml и *.product.

...