Han*_*etz 8 java osgi maven-2 web-applications
我想部署一个带有war包结构的OSGi包,因此它被Struts认为是一个Web应用程序.我使用Maven,所以我内置了WAR包,我有Maven bundle-plugin为我创建OSGi兼容的清单.
问题是,这两个不能一起工作,所以bundle插件不知道类文件现在在子文件夹中classes/
并且捆绑的jar 文件都在lib/
,所以它创建了一个错误的Bundle-classpath
标题.我可以手动为我添加正确的标题pom.xml
,但我想要自动添加.我怎样才能做到这一点?
Pav*_*hos 19
在OPS4J Wiki页面上描述了(或多或少)实现此目的的一种方法 - "在其他项目类型中获得maven-bundle-plugin的好处".
您可以Bundle-ClassPath
在您的配置中配置依赖项嵌入和指令,pom.xml
以匹配WAR插件使用的位置.然后,maven-bundle-plugin将生成正确的清单头.
maven-bundle-plugin的说明可能如下所示:
<instructions>
<Bundle-ClassPath>.,WEB-INF/classes,{maven-dependencies}</Bundle-ClassPath>
<Embed-Directory>WEB-INF/lib</Embed-Directory>
<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<!-- ... -->
</instructions>
Run Code Online (Sandbox Code Playgroud)
ETA:使用这种方法时,我发现了两件值得注意的事情:
WEB-INF
目录,因为当执行清单目标时,war插件还没有创建它们(它只在稍后的阶段运行)Bundle-ClassPath
指令必须包含".",否则bundle插件会弄乱Import-Packages
标题.我通过Google在一些JIRA问题中发现了这个问题,但我找不到该网址了.除此之外它工作正常.