Java 使用Maven构建OSGI声明性服务

Java 使用Maven构建OSGI声明性服务,java,service,osgi,Java,Service,Osgi,我在用Maven构建OSGI服务时遇到了一个问题。Mypom.xml: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.0.1</version> <extensions>true</extensions>

我在用Maven构建OSGI服务时遇到了一个问题。My
pom.xml

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.0.1</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
          <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
          <Service-Component>OSGI-INF/activator.xml</Service-Component>
          <Import-Package>org.osgi.framework</Import-Package>
        </instructions>
    </configuration>
</plugin>

org.apache.felix
maven捆绑插件
2.0.1
真的
${pom.artifactId}
OSGI-INF/activator.xml
org.osgi.framework

当我使用Maven安装构建时,会生成.jar文件,但OSGI-INF文件夹不存在。我使用Eclipse和m2e插件。为什么OSGI-INF文件夹不在.jar文件中?

因此,如果您想使用bnd的内部注释框架,就不需要依赖felix scr插件

    <dependency>
        <groupId>biz.aQute</groupId>
        <artifactId>bndlib</artifactId>
        <version>1.50.0</version>
    </dependency>

商业水

另外,你看起来很时髦,我建议你:

    <instructions>
         <Export-Package>{local-packages};version="${project.version}"</Export-Package>
         <Import-Package>*</Import-Package>
         <Private-Package>{local-packages}</Private-Package>
         <Service-Component>*</Service-Component>
    </instructions>

{本地包};version=“${project.version}”
*
{本地包}
*

有没有办法不用注释就可以使用ready activator.xml?是的,但是注释非常好,可以自动为您生成所有内容;)因此,在我的项目中,我们遇到了一个类似的问题,请尝试以下方法:OSGI-INF/activator.xml您可能还需要向内置maven中添加一个参考资料部分,以获取资源。当我将OSGI-INF放在src/main/resources中时,我假设您的OSGI-INF目录位于src/main/resources中。谢谢你的回答。
    <instructions>
         <Export-Package>{local-packages};version="${project.version}"</Export-Package>
         <Import-Package>*</Import-Package>
         <Private-Package>{local-packages}</Private-Package>
         <Service-Component>*</Service-Component>
    </instructions>