Я пытаюсь добавить платформу 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 с круговыми зависимостями, подобными этому?