我尝试在**Liferay DXP(OSGi)**中集成Apache POI,但无法解决与gradle项目中POI 3.17版本的依赖关系。我创建了独立项目,包含以下JAR:
- poi-3.17.jar
- poi-ooxml-3.17.jar
- poi-ooxml-schemas-3.17.jar
- xmlbeans-2.6.0.jar
- commons-collections4-4.1.jar
另外,我在下面添加了build.gradle中添加的gradle依赖
compile group: 'org.apache.poi', name: 'poi', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.17'
compile group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '2.6.0'
compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'
另外,在bnd.bnd中也提供了相应的jar。有没有什么线索,我在这里错过了什么?
3条答案
按热度按时间1cosmwyk1#
经过大量调查,我找到了Liferay DXP和Apache POI集成的解决方案和正确的依赖项管理。
在build.gradle中添加以下依赖项:
compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
compile group: 'org.apache.poi', name: 'poi', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-excelant', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-scratchpad', version: '3.17'
compile group: 'org.apache.poi', name: 'ooxml-schemas', version: '1.3'
compile group: 'org.apache.poi', name: 'ooxml-security', version: '1.1'
compile group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '2.6.0'
在bnd.bnd文件中添加以下属性
Include-Resource:\ @commons-collections4-4.1.jar,\ @commons-lang3-3.4.jar,\ @ooxml-schemas-1.3.jar,\ @ooxml-security-1.1.jar,\ @poi-3.17.jar,\ @poi-ooxml-3.17.jar,\ @poi-ooxml-schemas-3.17.jar,\ @poi-excelant-3.17.jar,\ @poi-scratchpad-3.17.jar,\ @xmlbeans-2.6.0.jar
Import-Package: \ !com.sun.*,\ !junit*,\ !org.apache.avalon.framework.logger,\ !org.apache.crimson.jaxp,\ !org.apache.jcp.xml.dsig.internal.dom,\ !org.apache.log,\ !org.apache.xml.resolver*,\ !org.bouncycastle.*,\ !org.gjt.xpp,\ !org.junit*,\ !org.relaxng.datatype,\ !org.xmlpull.v1,\ !com.graphbuilder*,\ *
一旦您在给定文件中添加了这些属性,模块将成功部署并轻松将ApachePOI集成到Liferay DXP中。
r55awzrz2#
下面是apache-poi-4.0.0和Liferay 7的osgi包文件(bnd.bnd)。不幸的是,您的portlet jar文件将至少有27 MB。您必须使用Blade Client部署一些公共库
enyaitl33#
在Liferay DXP 7.4u55 / CE 7.4ga55中,我们有POI的共享依赖模块。因此我们可以在我们的build.gradle中添加:
通过这种方式,我们可以使用Liferay导出的软件包,而不是将其包含在捆绑的jar中。
在我们导入这个依赖项之后,我们可以在“外部库”下找到它(如果你使用IntelliJ IDE)。
这是Liferay CE GitHub存储库共享模块的链接:https://github.com/liferay/liferay-portal/tree/7.4.3.55-ga55/modules/apps/shared-dependencies/shared-dependencies-poi