多项目设置中的java maven shade过滤过多
如何在多模块maven项目设置中正确设置maven-shade
插件
故事情节
A(https://github.com/DataSystemsLab/GeoSpark)依赖于B(https://github.com/jiayuasu/JTSplus)是C的分支(com.lividsolutions.jts)
现在,对于我项目中的一些任务,我需要使用依赖于另一个com版本的D(http://www.geotools.org)。生动的解决方案。jts
如何在一个项目中使用这两个JAR?不幸的是,一个简单的依赖项替换在这里不起作用。着色应该是解决方案
第一次尝试-对父pom进行着色
当我尝试将maven shadeplugin应用于https://github.com/DataSystemsLab/GeoSpark/blob/master/pom.xml的根pom(如Using Maven shade plugin in a multi module project - NullPointerException所述)时,会出现空指针异常
多项目设置
当遵循How to configure Maven shade plugin in a multi-module project?将其设置为多模块构建时,maven构建至少会编译。然而,生成的jar缺少geospark
模块的实际代码。我看不出这会被过滤到哪里。
我的更改可用https://github.com/geoHeil/GeoSpark/commit/23d212aeeeacad8b7199da69366d583fc48edcf0
主要变化是:
- 引入第三个模块
FinalModule
- 仅在那里启用了着色,将
com.vividsolutions.jts
替换为com.vividsolutions.jtsgeospark
# 1 楼答案
事实上,禁用放大功能是解决方案。否则,可能明确包含所需的工件也会起作用