Java 在OSGI中导入内部包
我最近开始将现有的maven项目转换为OSGI捆绑包,对POM文件中的Java 在OSGI中导入内部包,java,import,osgi,pom.xml,osgi-bundle,Java,Import,Osgi,Pom.xml,Osgi Bundle,我最近开始将现有的maven项目转换为OSGI捆绑包,对POM文件中的标记中需要列出的内容感到困惑 起初,我用星号表示OSGI认为需要的所有内容,并惊讶地看到它列出了来自同一个项目的包。我在网上四处查看,未能找到是否需要导入内部软件包的明确答案,也未能找到不导入内部软件包可能导致的潜在问题的明确答案 我是否需要在中列出项目中使用过的软件包,如果需要,原因是我觉得没有必要 我正在POM中使用以下插件: org.apache.felix maven捆绑插件 以下是tx core的结果pom。所有tx
标记中需要列出的内容感到困惑
起初,我用星号表示OSGI认为需要的所有内容,并惊讶地看到它列出了来自同一个项目的包。我在网上四处查看,未能找到是否需要导入内部软件包的明确答案,也未能找到不导入内部软件包可能导致的潜在问题的明确答案
我是否需要在
中列出项目中使用过的软件包,如果需要,原因是我觉得没有必要
我正在POM中使用以下插件:org.apache.felix
maven捆绑插件
以下是tx core的结果pom。所有tx core.*包均来自项目本身
Manifest-Version: 1.0
Bundle-SymbolicName: tx-core
Archiver-Version: Plexus Archiver
Built-By: User
Bnd-LastModified: 1466089543997
Bundle-ManifestVersion: 2
Import-Package: cafe.crypto,tx.core,tx.core.conf,tx.core.conv,tx.core.
production,tx.core.query,tx.core.util,javax.crypto,javax.crypto.spec,
javax.servlet
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
DynamicImport-Package: javax.*, org.xml.sax, org.xml.sax.*,org.w3c.*
Tool: Bnd-3.0.0.201509101326
Export-Package: cafe.crypto;version="4.0.1",tx.core;uses:="tx.core.pro
duction,tx.core.query";version="4.0.1",tx.core.conf;uses:="tx.core,tx
.core.production";version="4.0.1",tx.core.conv;version="4.0.1",tx.cor
e.identity;version="4.0.1",tx.core.io;uses:="tx.core,tx.core.producti
on";version="4.0.1",tx.core.notify;version="4.0.1",tx.core.production
;uses:="tx.core,tx.core.conv,tx.core.query";version="4.0.1",tx.core.q
uery;uses:="tx.core.conv";version="4.0.1",tx.core.util;version="4.0.1
",tx;version="4.0.1"
Bundle-Name: tx-core
Bundle-Version: 4.0.1
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.8.0_77
感谢您提供的一切帮助。对于给定捆绑包的内部包,无需导入它们<代码>用于指示跨捆绑包所需的包 在没有看到您的POM/MANIFEST或者不知道您用于OSGi绑定的Maven插件的情况下,我不完全确定为什么星号会显示所有内部包。我怀疑您的POM/清单正在使用
导出所有内部包
更新
从:
假定为“*”,它导入捆绑包内容引用的所有内容,但不包含在捆绑包中。默认情况下,还将导入任何导出的包,以确保一致的类空间
有关发生这种情况的原因的描述,请参阅
默认情况下,如果未明确定义
,则会导出所有包(例外情况除外),然后重新导入:
现在假定是本地Java源中的一组包,不包括默认包“.”和任何包含“impl”或“internal”的包
对于捆绑包内部的包,如果您不希望其他捆绑包能够引用它们,则有2种选择:
中的其他捆绑包公开的包的显式列表
中定义一个明确的包列表,这些包是您不希望暴露给其他包的对于给定包的内部包,不需要导入它们<代码>用于指示跨捆绑包所需的包 在没有看到您的POM/MANIFEST或者不知道您用于OSGi绑定的Maven插件的情况下,我不完全确定为什么星号会显示所有内部包。我怀疑您的POM/清单正在使用
导出所有内部包
更新
从:
假定为“*”,它导入捆绑包内容引用的所有内容,但不包含在捆绑包中。默认情况下,还将导入任何导出的包,以确保一致的类空间
有关发生这种情况的原因的描述,请参阅
默认情况下,如果未明确定义
,则会导出所有包(例外情况除外),然后重新导入:
现在假定是本地Java源中的一组包,不包括默认包“.”和任何包含“impl”或“internal”的包
对于捆绑包内部的包,如果您不希望其他捆绑包能够引用它们,则有2种选择:
中的其他捆绑包公开的包的显式列表
中定义一个明确的包列表,这些包是您不希望暴露给其他包的您根本不需要编写
头。默认值为“*”,这意味着“导入捆绑包中代码引用但实际上未出现在捆绑包中的所有包”
如果这是生成作为导入的“内部”包,那么它们不是内部包,也就是说,由于某种原因,它们没有包含在包中。需要查看更多项目结构才能诊断此问题。您根本不需要编写
标题。默认值为“*”,这意味着“导入捆绑包中代码引用但实际上未出现在捆绑包中的所有包”
如果这是生成作为导入的“内部”包,那么它们不是内部包,也就是说,由于某种原因,它们没有包含在包中。需要查看更多项目结构才能诊断此问题