Я мог бы заставить плагин maven scr работать с java 10 и с аннотациями felix scr, изменив библиотеку felix.scr.generator-1.1.4, которая является зависимостью от плагина maven scr версии 1.7.4 (который работал нормально с Ява 8, как я уже упоминал в вопросе)
я заменил
final Iterator<AnnotationTagProvider> serviceIter = ServiceRegistry.lookupProviders(AnnotationTagProvider.class, classLoader);
с
final Iterator<AnnotationTagProvider> serviceIter = ServiceLoader.load(AnnotationTagProvider.class, classLoader).iterator();
в AnnotationTagProviderManager
классе felix.scr.generator-1.1.4
как предложено в аналогичная проблема .
А также обновлены исходные и целевые конфигурации плагина компилятора maven. Теперь структура папок OSGI-INF создается с помощью модифицированного генератора felix scr и плагина felix scr
Вот некоторые факты, которые я узнал - надеясь, что это кому-нибудь поможет,
Чтобы автоматически генерировать xmls метаданных osgi во время сборки maven, можно использовать одну из следующих схем аннотаций.
- Аннотации Felix SCR
- Аннотации OSGi декларативных услуг (DS)
В старых версиях плагина maven scr использовались аннотации felix scr, но позже в документациях упоминалось, что он начал поддерживать аннотации felix scr и аннотации DS из osgi, что является стандартным набором аннотаций для генерации метаданных osgi xmls. , Это делается путем добавления соответствующей зависимости к pom с помощью плагина scr. Однако более новые версии плагина scr, похоже, не поддерживают аннотации felix scr, и я обнаружил, что плагин scr находится в режиме обслуживания, и лучше использовать плагин комплекта maven (без плагина scr), который поддерживает только osgi DS аннотации.
Так как аннотации felix scr используются в программной платформе, которую я обновляю, у меня было 2 варианта для продолжения. Либо для исправления проблем совместимости с java 10 в более старой версии (1.7.4) плагина scr, либо для преобразования существующих аннотаций scr в аннотации osgi ds, чтобы я мог избежать использования плагина scr. Я решил, что лучше попытаться сохранить существующую схему аннотаций, потому что ее изменение затрагивает тех, кто использует платформу со своими собственными пакетами osgi.