我是新手,现在正在学习OSGi。我正在尝试使用OSGi MANIFEST.MF文件制作maven项目。编写bundle激活器类和MANIFEST.MF文件后,我“mvn package”它,并将OSGi安装在控制台中。然后这个问题发生在我的包被命名为这样而不是名字时,我mvn-package-ed它。
unknown-0.0.0
然后,当我检查.jar中的MANIFEST.MF文件时,内部是这样的:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: 5111100191
Created-By: Apache Maven 3.2.1
Build-Jdk: 1.8.0_40
而不是我这样编码:
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.pragprog.HelloWorld
Bundle-Name: HelloWorld
Bundle-Version: 1.0.0
Bundle-Activator: com.pragprog.hello.HelloWorld
Import-Package: org.osgi.framework
我猜我编写的MANIFEST.MF在某种程度上没有加载我mvn打包它。这是我的项目目录结构
HelloWorld
/src
/main
/java
/com.pragprog.hello.HelloWorld.java
/resources
/META-INF/MANIFEST.MF
/test
/java
/resources
/target
/**.jar file here**/
pom.xml
我已经搜索过这个,但找不到任何明确的解决方案。那么我该如何解决这个问题?
提前感谢。
答案 0 :(得分:2)
“mvn package”,它使用“maven-assembly-plugin”不是创建OSGi包的正确方法。相反,你应该使用“maven-bundle-plugin”。 Here there is some documentation关于如何使用它。
答案 1 :(得分:1)
另请查看bndtools团队的新bnd-maven-plugin
。 http://njbartlett.name/2015/03/27/announcing-bnd-maven-plugin.html
你遇到的问题是maven jar插件会忽略你的清单,除非你在pom中配置这样的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>