隔离相互依赖的gradle模块之间的类路径

时间:2018-07-05 13:49:00

标签: java gradle apache-poi build.gradle ojdbc

对于一个项目,我们需要创建一个 .xlsm excel文档,该文档会自动填充输入到应用程序中的数据。 excel文档的所有处理均独立于后端的其余部分,因此Excel文档的所有直接处理均移至其自己的模块中,因此该项目具有以下结构

+ BaseFolder
|- settings.gradle
|- build.gradle
|
+--+ backend
|  |- backend.gradle
|  |- src
|
+--+ excel
   |- excel.gradle
   |- src

excel 模块中,我们选择使用Apache POI填写.xlsm模板文件。因此,excel.gradle具有以下依赖性

compile('org.apache.poi:poi-ooxml:3.17')

后端模块中,我们必须使用Spring Tools创建API,并使用ojdbc8与Oracle数据库进行通信以持久存储信息。来自数据库的数据需要写入excel文件,为什么在backend.gradle的依赖项中拥有

compile project(':excel')
...
compile('com.oracle.jdbc:ojdbc8:12.2.0.1')

excel 项目通过TemplateBuilderAdapter后端中使用,该项目采用数据库表示形式,并在TemplateBuilder上调用相应的方法。

excel 模块内的.write(OutputStream stream)上的Apache POI XSSFWorkbook上调用TemplateBuilder时,创建的文件应为原样。另一方面,当在.write(OutputStream stream)上调用TemplateBuilderAdapter时,仅将其传递给TemplateBuilder,则文件已损坏。

鉴于通过编译ojdbc8XSSFWorkbook when written creates a corrupted .xlsx document in Spring Boot application using JDBC得出的推论,类路径最终会更改Apache POI使用的XML解析器,从而导致Excel文件损坏。我们试图对 excel 项目的所有依赖项使用胖的 .jar 文件,但这没有运气。

在不更改 excel 项目中使用的所有内容的类路径的情况下,如何在后端项目中使用 excel 项目?而且,如果我们必须重新指定导入 ojdbc8 后要清理的类路径,是否有人对导致冲突的原因有任何想法?

0 个答案:

没有答案