【发布时间】:2020-11-30 12:30:17
【问题描述】:
我想自动将 Hibernate 核心的所有依赖项隐藏到我的主 jar 中,而不是明确定义它们(因为这似乎只是一场鹅追逐)。
我不能将所有内容都隐藏到我的 jar 中,因为不需要其他依赖项,这会使我的 jar 变得不必要地大。
是否有可能让 maven 自动隐藏您的顶级依赖项之一的所有依赖项?
【问题讨论】:
标签: java hibernate maven maven-shade-plugin
我想自动将 Hibernate 核心的所有依赖项隐藏到我的主 jar 中,而不是明确定义它们(因为这似乎只是一场鹅追逐)。
我不能将所有内容都隐藏到我的 jar 中,因为不需要其他依赖项,这会使我的 jar 变得不必要地大。
是否有可能让 maven 自动隐藏您的顶级依赖项之一的所有依赖项?
【问题讨论】:
标签: java hibernate maven maven-shade-plugin
您可以将不希望遮蔽的依赖项的范围设置为“已提供”,这将向 maven 标记该库在运行时提供/假定可用。
您的其余依赖项,要么没有指定范围,要么具有“编译”范围,应该是您的 jar 需要遮蔽的那些。
然后在你的 pom 中使用类似的东西:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
【讨论】:
Shade 插件支持选择性inclusion, exclusion, filtering and minimization of a jar。这应该可以解决问题。
【讨论】: