如何使用Maven Bundle Plugin(BND)从另一个依赖项中存在的依赖项中排除命名包?

时间:2012-10-22 12:39:58

标签: java osgi bnd maven-bundle-plugin

我有两个依赖项:

<dependency>
    <groupId>org.postgis</groupId>
    <artifactId>postgis-jdbc</artifactId>
    <version>1.5.2</version>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>com.springsource.org.postgresql.jdbc4</artifactId>
    <version>8.3.604</version>
</dependency>

两个依赖项导出包:

  • org.postgres

使用Maven Bundle Plugin的 wrap 命令时,如何从postgis-jdbc中排除导出 org.postgres

2 个答案:

答案 0 :(得分:1)

将以下内容添加到pom中的配置部分:

<Export-Package>!org.postgres</Export-Package>

或者你可以忽略任何包

<Export-Package>!*</Export-Package>

答案 1 :(得分:0)

使用Maven Bundle插件,我找不到有选择地排除所选包装依赖项的包导出的实用方法。我的解决方案是在我的包中嵌入 com.springsource.org.postgresql.jdbc4 postgis-jdbc ,而不是导出他们的包:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.7</version>
    <extensions>true</extensions>
    <configuration>
      <instructions>
            ...
            <Embed-Dependency>
                postgresql;postgis-jdbc
            </Embed-Dependency>
            ...
        </instructions>
    </configuration>
    <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>bundle</goal>
           </goals>
        </execution>
    </executions>
</plugin>