【发布时间】:2017-10-07 23:43:29
【问题描述】:
如何在多模块maven项目设置中正确设置maven-shade插件?
故事情节
A (https://github.com/DataSystemsLab/GeoSpark) 依赖于 B (https://github.com/jiayuasu/JTSplus) 是 C (com.vividsolutions.jts) 的一个分支
现在对于我项目中的一些任务,我需要使用 D (http://www.geotools.org),它依赖于 com.vividsolutions.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
【问题讨论】:
-
我注意到禁用 jar 的 minifiaction 时:
<!--<minimizeJar>true</minimizeJar>-->未删除原始代码。包含没有帮助。
标签: java maven maven-shade-plugin