【问题标题】:Shade all dependencies of another dependency (hibernate) into jar将另一个依赖项(休眠)的所有依赖项隐藏到 jar 中
【发布时间】:2020-11-30 12:30:17
【问题描述】:

我想自动将 Hibernate 核心的所有依赖项隐藏到我的主 jar 中,而不是明确定义它们(因为这似乎只是一场鹅追逐)。

我不能将所有内容都隐藏到我的 jar 中,因为不需要其他依赖项,这会使我的 jar 变得不必要地大。

是否有可能让 maven 自动隐藏您的顶级依赖项之一的所有依赖项?

【问题讨论】:

    标签: java hibernate maven maven-shade-plugin


    【解决方案1】:

    您可以将不希望遮蔽的依赖项的范围设置为“已提供”,这将向 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>
    

    【讨论】:

    • 很高兴能帮上忙!
    【解决方案2】:

    Shade 插件支持选择性inclusion, exclusion, filtering and minimization of a jar。这应该可以解决问题。

    【讨论】:

    • 我目前正在使用包含,这会阻止我使用我尝试过的通配符来包含所有休眠依赖项。已经看到了这个,不是解决方案。
    猜你喜欢
    • 2014-10-26
    • 2012-03-18
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2015-07-12
    相关资源
    最近更新 更多