1

实际上,当我构建我的项目时,它会将捆绑包部署到正在运行的 OSGI 控制台。现在捆绑包处于已安装状态,并显示无法找到 commons-net 捆绑包的红色警报。

解决此问题的一种方法是将捆绑包显式安装到正在运行的 osgi 框架本身。

另一种方法可能是将嵌入依赖项添加到 maven。但这种方法行不通。我在 maven-build-plugin 的指令标签中添加了 Embeded-Dependency。它没有显示任何错误。

如果有任何建议,请告诉我。

4

1 回答 1

2

Embeded-Dependency 没有显示任何错误,因为您可以将任何内容放入说明中。如果不知道键值对,它将简单地插入到 MANIFEST.MF 中。尝试编写 Embed-Dependency,它应该可以工作。

一个很好的例子如下(我们如何为自己创建休眠包):

<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 回答