我有一个服务器应用程序,包括多个OSGi包,一些我的,一些第三方.其中一个bundle使用Struts提供Web前端.必要的Struts库位于Web前端包中.
现在我想添加第二个包,它提供另一个Web前端,具有不同的依赖关系和一个非常不同的用例.我也希望将Struts用于该捆绑包,但我不想将相同的库放入两个捆绑包中.
使用OSGi,将Struts库分离成自己的捆绑包并使用我的捆绑包中的那些应该没有问题.但是,我找不到那种方式打包的Struts.
一些快速的谷歌搜索,看看the Struts homepage并没有产生任何结果.我可以找到一个Struts插件来在Struts中运行一个OSGi容器,但这不是我想要的.
解决方法:
看看http://repo2.maven.org/maven2/org/apache/struts/struts2-core/2.1.6/上当前的struts捆绑包.
例如,如果您下载struts2-core-2.1.6.jar,请将其解压缩并查看META-INF / MANIFEST.MF,您会看到它确实包含OSGI头文件(Import-Package,Export-Package,Bundle- *):
C:\TMP\META-INF>more MANIFEST.MF
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: 1.5.0_10 (Sun Microsystems Inc.)
Built-By: musachyb
Build-Jdk: 1.5.0_10
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Import-Package: com.opensymphony.xwork2;version="2.1",com.opensymphon
<SNIP>
Bnd-LastModified: 1231185746365
Export-Package: org.apache.struts2.views.xslt;uses:="javax.servlet.ht
Bundle-Version: 2.1.6
<SNIP>
Bundle-Description: Apache Struts 2
Bundle-Name: Struts 2 Core
Bundle-DocURL: http://www.apache.org
Bundle-ManifestVersion: 2
Bundle-Vendor: Apache Software Foundation
Bundle-SymbolicName: org.apache.struts.struts2-core
Tool: Bnd-0.0.255
不知道你如何在OSGi应用程序中使用它们 – 但理论上你至少可以参考它们并做“东西”!