1

実際、プロジェクトをビルドすると、実行中の OSGI コンソールにバンドルがデプロイされます。これで、バンドルはインストール済みの状態になり、commons-net バンドルが見つからないという赤い警告が表示されます。

これを解決する 1 つの方法は、実行中の osgi フレームワーク自体に明示的にバンドルをインストールすることです。

別の方法として、Maven に Embeded-Dependency を追加することもできます。しかし、このアプローチは機能していません。maven-build-plugin の instruction タグに Embeded-Dependency を追加しました。エラーは表示されませんでした。

何か提案があれば教えてください。

4

1 に答える 1

2

命令には何でも配置できるため、Embeded-Dependency はエラーを表示しませんでした。キーと値のペアが不明な場合は、MANIFEST.MF にそのまま挿入されます。Embed-Dependency を書いてみてください。

良い例は次のようになります (自分たちで hibernate バンドルを作成した方法)。

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <_exportcontents>
                !org.hibernate.validator.*,
                org.hibernate.*;-noimport:=true,
            </_exportcontents>
            <Import-Package>
                javax.persistence*;version="1.1.0",
                javax.naming*,
                javax.sql,
                javax.transaction*;version="1.1.0",
                javax.xml.stream.*,
                javax.xml.*,
                org.slf4j,
                org.w3c.dom,
                org.xml.sax*,
                antlr.*,
                org.jboss.logging.*,
                org.dom4j*,
                *;resolution:=optional
            </Import-Package>
            <Embed-Dependency>
                groupId=org.hibernate;artifactId=hibernate-core,
                groupId=org.hibernate;artifactId=hibernate-entitymanager,
                groupId=org.hibernate.common;artifactId=hibernate-commons-annotations
            </Embed-Dependency>
        </instructions>
    </configuration>
</plugin>
于 2013-04-09T15:16:43.583 に答える