OSGI: генерировать путь к классам пакетов в maven-bundle-plugin - PullRequest
4 голосов
/ 30 января 2011

Я пытаюсь добавить все фляги из web-inf / lib в Bundle-ClassPath.Я видел несколько способов сделать это, ни один из них не работает:

1) добавить

<Embed-Dependency>*;scope=compile|runtime;inline=true</Embed-Dependency>
<Embed-Directory>WEB-INF/lib</Embed-Directory>
<Embed-Transitive>true</Embed-Transitive>

2) добавить

<Bundle-ClassPath>.,{maven-dependencies},WEB-INF/classes</Bundle-ClassPath>

Конечно, написание одной банкиодин в "Bundle-ClassPath" решает проблему, но это не похоже на разумное решение.

спасибо

Ответы [ 2 ]

6 голосов
/ 30 января 2011

В вашем первом фрагменте кода не будет использоваться <Embed-Dependency>, как написано?Примеры в http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html, кажется, указывают на это.

Кроме того, какую версию плагина bnd вы используете?Эти функции доступны с версии 1.2.0 +.

1 голос
/ 28 января 2014

Рабочий пример для классического веб-приложения OSGified

<plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                        <configuration>
                            <instructions>
                                <Private-Package>org.example</Private-Package>
                                <Web-ContextPath>webappcontextpath</Web-ContextPath>
                                <Bundle-ClassPath>.,WEB-INF/classes,{maven-dependencies}</Bundle-ClassPath>
                                <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
                                <Embed-Directory>WEB-INF/lib</Embed-Directory>
                            </instructions>
                            <supportedProjectTypes>
                                <supportedProjectType>war</supportedProjectType>
                            </supportedProjectTypes>
                        </configuration>
                    </execution>
                </executions>
</plugin>

Обратите внимание, что Embed-Dependency находится внутри instructions элемента

...