Настройте разрешение: = опционально из подключаемого модуля Maven. - PullRequest
0 голосов
/ 31 августа 2018

Мне нужна помощь для настройки зависимости как необязательной,

Использование maven-bundle-plugin: 3.4.0,

В разделе "Импорт-пакеты" они указаны как разрешение: необязательно

<plugin> 
        <groupId>org.apache.felix</groupId> 
        <artifactId>maven-bundle-plugin</artifactId> 
        <version>3.4.0</version> 
        <extensions>true</extensions> 
        <executions> 
                <execution> 
                <id>bundle-manifest</id> 
                <phase>process-classes</phase> 
                <goals> 
                    <goal>manifest</goal> 
                </goals> 
                <configuration> 
                        <instructions> 
                                <Export-Package>*</Export-Package> 
                                <Import-Package> 
                                        org.junit.*;/resolution=optional/, 
                                        junit.framework.*;/resolution=optional/ 
                                </Import-Package> 
                                <_nouses>true</_nouses> 
                        </instructions> 
                </configuration> 
        </execution> 
   </executions> 
</plugin> 

Ожидается, что файл манифеста OSGI должен содержать разрешение: = необязательно для этой библиотеки, но изменения не отражают.

Ожидание: junit.framework; разрешение: = необязательно

но в сгенерированном файле манифеста junit.framework

Я пропустил какую-либо конфигурацию, чтобы отразить ее разрешение как необязательное в сгенерированный файл манифеста?

По расследованию Maven-Bundle-Plugin, файла BundlePlugin.java я понял что если артефакт содержит необязательное значение true, то это отражается в сгенерированный файл манифеста в качестве разрешения: = необязательно

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 

   <scope>provided</scope> 
   <optional>true</optional> 
</dependency> 

Но предыдущее решение должно работать в соответствии с BundlePlugin.java исходный код,

направьте меня, чтобы продолжить.

1 Ответ

0 голосов
/ 11 апреля 2019

Вам просто нужно удалить косую черту (/), которую вы поместили вокруг resolution=optional:

<Import-Package> 
    org.junit.*;resolution=optional,
    junit.framework.*;resolution=optional
</Import-Package>
...