maven bundle插件配置

时间:2013-11-09 17:43:49

标签: java maven osgi bundle manifest

我正在使用maven bundle插件生成清单文件。 这是我的配置:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <_wab>src/main/webapp</_wab>
                  <Import-Package>org.osgi.framework,javax.servlet, javax.servlet.http</Import-Package>
                  <Export-Package></Export-Package>
                  <Bundle-Version>2</Bundle-Version>
                  <Bundle-SymbolicName>fr.lyon1.Client</Bundle-SymbolicName>
                  <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
                  <Web-ContextPath>/client</Web-ContextPath>
              </instructions>
          </configuration>
      </plugin>

这是生成文件的示例:

Manifest-Version: 1.0
Bnd-LastModified: 1384018413590
Build-Jdk: 1.7.0_45
Built-By: houssem
Bundle-ClassPath: WEB-INF/classes,.,WEB-INF/classes
Bundle-ManifestVersion: 2
Bundle-Name: client Maven Webapp
Bundle-SymbolicName: fr.lyon1.Client
Bundle-Version: 2
Created-By: Apache Maven Bundle Plugin
Import-Package: javax.servlet,javax.servlet.http,org.osgi.framework;vers
 ion="[1.5,2)"
Tool: Bnd-2.1.0.20130426-122213
Web-ContextPath: /client

问题是在Bundle-ClassPath中,插件自动添加“WEB-INF / classes”。

如何防止它产生这个?

即使我将配置更改为 。 它产生了这个: Bundle-ClassPath:WEB-INF / classes,。

我想拥有。在WEB-INF / classes之前

谢谢你&amp;抱歉我的英文=)

1 个答案:

答案 0 :(得分:1)

_wab指令告诉bundle plugin(bnd)你希望你的类路径结构像WAR文件,即WEB-INF/classes后跟WEB-INF/lib/*.jar

因此,如果你想使用“。”作为您的bundle类路径,然后删除_wab指令。

但是,如果这样做,请注意根据J2EE标准,您的捆绑包将不再是有效的WAR文件。因此,虽然它可以很好地部署到OSGi框架中,但它不会部署到传统的J2EE服务器或像Tomcat这样的Web容器中。如果您已将捆绑包的内部耦合到OSGi API(例如BundleContext等),则这可能并不重要。