【问题标题】:Remove parent from Maven Shade dependency reduced pom with Flatten从 Maven Shade 依赖项中删除父级,使用 Flatten 减少 pom
【发布时间】:2022-01-27 20:02:31
【问题描述】:

项目结构如下:

FatJarRootPom 依赖于 XYFatJarAFatJarB 都将 FatJarRootPom 声明为它们的父级,因此它们将其依赖关系 XY 与它们自己的依赖关系一起隐藏到它们的 JAR 中。

问题在于,Shade Plugin 将在 dependency-reduced-pom.xml 中保留对父级的引用,因此 FatJarA 的 pom 仍将明确依赖于 XY,尽管它们已经在 J​​AR 中。

Flatten Plugin 可以摆脱父级,因此最好在扁平化 pom 上运行 Shade Plugin。它将处理所有依赖项,然后将它们从dependency-reduced-pom.xml 中删除。但是,当我配置 Flatten Plugin 时,Shade Plugin 不会拾取它的输出,仍然会产生不正确的 pom。

我找到了this answer,它建议更改 shade 和 flatten 的调用顺序,以便首先使用 shade,但是 它不起作用,因为来自 FatJarRootPom 的依赖项仍会在 pom 中,我试图避免。

也许还有其他方法可以在不使用 flatten 插件的情况下从 dependency-reduced-pom.xml 中删除父部分?

更新:我尝试将我的 FatJarRootPom 更改为 POM 依赖项 FatJarPom,其中列出了传递依赖项,有趣的是,Maven Shade 插件将专门跳过 POM 依赖项并且不会删除它from dependency 减少了 POM,即使这意味着所有阴影依赖项都将绝对显示为 fat-jar 工件的依赖项。

【问题讨论】:

    标签: maven maven-shade-plugin fatjar maven-flatten-plugin


    【解决方案1】:

    我忽略了 Flatten Plugin 具有“fatjar”模式,它将去除所有依赖项。这是一种非常粗粒度的方法,但在我的用例中应该可以。

    所以解决办法是放置

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>flatten-maven-plugin</artifactId>
                    <version>1.2.7</version>
                    <executions>
                        <execution>
                            <id>flatten</id>
                            <phase>package</phase>
                            <goals>
                                <goal>flatten</goal>
                            </goals>
                            <configuration>
                                <updatePomFile>true</updatePomFile>
                                <flattenMode>fatjar</flattenMode>
                            </configuration>
                        </execution>
                        ...
    

    在相应的 Shade Plugin 部分之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2013-05-29
      • 2018-02-16
      • 1970-01-01
      • 2022-12-06
      • 2017-07-13
      • 1970-01-01
      相关资源
      最近更新 更多