如何使用Apache Felix Maven Bundle插件将源包含到OSGI包中?

时间:2016-05-18 17:00:55

标签: maven osgi

我正在尝试构建一个非常简单的包,我想把内部的源代码放在调试中。首先,根据BND说明参考here,我尝试将<sources>true</sources>添加到<instructions>。 之后,在this讨论中,我发现它应该是<_sources>true</_sources>,带有下划线。好的,现在它开始尝试将源代码放入捆绑包中,但我仍然有错误:

Bundle ru.fragmental.beaver:blob.api:bundle:1.0-SNAPSHOT:添加不是目录的源路径:D:\ devel \ fragmental.beaver \ blob_api \ target \ generated-sources \ annotations

有人可以澄清我的pom.xml有什么问题吗?而且,第二个问题是 - 为什么需要下划线,我在哪里可以找到关于此的文档? 我的pom.xml和项目结构如下:

pom.xml(此文本编辑器使用了xml架构和项目标签,但它们存在于原始文件中):

<groupId>ru.fragmental.beaver</groupId> <artifactId>blob.api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>bundle</packaging> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-Name>Blob API</Bundle-Name> <Bundle-SymbolicName>ru.fragmental.beaver.blob.api</Bundle-SymbolicName> <Export-Package>ru.fragmental.beaver.blob.api</Export-Package> <_sources>true</_sources> </instructions> </configuration> </plugin> </plugins> </build>

项目结构如下:

blob_api
   |
   |--src
   |   |
   |   |--main
   |        |
   |        |--java
   |             |
   |             |--ru.fragmental.beaver.blob.api(as nested dirs)
   |                        |
   |                        |
   |                        |--BlobPojo.java
   |                        |--BlobStorage.java
   |
   |--pom.xml

整个项目是here

1 个答案:

答案 0 :(得分:0)

正确的bnd指令是-sources: true(参见http://bnd.bndtools.org/instructions/sources.html。)但是在映射到maven pom文件的XML元素时,你不能使用 - ,因此它被修改为_。这就是maven-bundle-plugin将XML元素发送到bnd指令的方式。

第二个问题似乎是maven-bundle-plugin中的一个错误,因为它为bnd提供了一个不存在的目录,然后抱怨。