我在Fuse中有一个CXF Web服务应用程序,它在camel context xml文件中引用了一个包含我从WSDL生成的文件的jar。
<cxf:cxfEndpoint id="LookupEndpoint"
address="${my.LookupUri}"
serviceClass="com.whatever.IWebService"
wsdlURL="wsdl/MyWsdl.wsdl"/>
com.whatever.*
位于我的<Import-Package>
列表中。 jar是我的maven依赖项。我可以说import com.whatever.IWebService;
并且它没有抱怨。
但maven-bundle-plugin在MANIFEST.MF
中不包含此包它包括我要求的所有其他包。但不是这个。所以在Fuse中,当我部署它时,我得到了ClassNotFoundException,引用了context.xml类加载。
非常令人沮丧。有没有办法可以强制插件导入某个包?因为他们的自动魔法依赖解算器忽略了我的<Import-Package>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${version.maven-bundle-plugin}</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>src/main/resources/META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>
*,
com.imports.this.one.fine*,
com.imports.this.one.just.fine*,
com.imports.does.not.import.this.one.*,
</Import-Package>
<Export-Package>
com.something.export.*
</Export-Package>
</instructions>
</configuration>
</plugin>
答案 0 :(得分:0)
当您使用带有通配符的<Import-Package>
时,会为所有与通配符匹配的软件包生成OSGi Import-Package标头,该软件包中的代码依赖于。
如果maven-bundle-plugin没有为您期望的包生成导入,则意味着您的包中的代码实际上并未引用该包。
不是要导入这个包,不应该包含在包中吗?你为什么要导入它?