我想同时使用Jasper Reports(香草,从来没有让Grails Jasper 插件工作 - 看到这个)和Grails Rendering 插件(一个更适合某些报告,另一个更适合其他报告)。
如果我包含 'com.lowagie:itext:2.1.5' 或 'com.lowagie:itext:4.2.1' 则在运行渲染插件的 PDF 报告时我会丢失 com.lowagie.text.pdf.BaseFont.getCharBBox。
如果我包含“com.lowagie:itext:2.0.8”,那么在运行 Jasper 的 PDF 报告时我会丢失 com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlending。
两者都因 java.lang.NoSuchMethodError-s 而失败。
我没有尝试过最新的 iText 版本,但它们有不同的包名称和更严格的许可,所以我认为它们不太适合。
我的 BuildConfig.groovy 看起来像这样(前 3 个依赖项之一未注释):
dependencies {
// runtime 'com.lowagie:itext:4.2.1' // missing.BaseFont.getCharBBox
// runtime 'com.lowagie:itext:2.0.8' // missing PdfWriter.setRgbTransparencyBlending
// runtime 'com.lowagie:itext:2.1.5' // missing.BaseFont.getCharBBox
compile 'net.sf.jasperreports:jasperreports:5.2.0' // needed by jasper
runtime 'org.springframework:spring-test:3.2.4.RELEASE' // needed by rendering plugin
runtime 'commons-collections:commons-collections:3.2.1' // needed for jasper
}
plugins {
// ...
compile ":rendering:0.4.4"
// compile ":jasper:1.6.1" // couldn't get this to generate anything, but not sure it would help any
// ...
}
是否有任何我可以尝试的“旧”版本的 iText(MPL 许可)可能有效?
有什么方法可以让 Maven/Gradle 制作它,以便我可以让其中一个库/插件使用一个版本的 iText,而另一个?