阴影罐中的Maven依赖排除

时间:2019-10-25 15:31:09

标签: java maven dependencies dependency-exclusion

因此,我有一个多模块项目,我创建了一个阴影罐子,以添加到非Maven项目以及支持其他Maven项目。我们有一些自己的库作为依赖项。但是,将它们捆绑在有阴影的jar中会在已经具有那些依赖项的非Maven应用程序中引起问题(并且不能仅删除以依赖有阴影的版本)。我一直在尝试在项目的pom中创建配置文件,以将这些依赖项从阴影jar中排除,但是maven似乎并不在乎。

我无法发布整个pom,但实质上,每个模块都依赖于其他模块,最后,我们有一个最终模块,该模块将所有内容捆绑在一起,这是我的个人资料所在的位置。我添加了一个依赖项列表,这些依赖项都包含我不想添加到阴影罐中的工件的排除项,我使用了dependency:tree将每个具有传递性依赖项的模块添加到排除项中,并添加了一个依赖项对于它以及它自己的排除,我已经在shade插件配置中添加了一个artifactSet来排除那些工件,并且如果该工件存在,我还添加了强制插件使构建失败。

我不想添加的工件仍被添加到阴影罐中。

<dependencies>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>my-module</artifactId>
        <version>1.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>some.dependency</groupId>
                <artifactId>i-dont-want</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

这行得通,但是问题是我还需要对模块进行依赖,该模块在可传递依赖于上述模块的依赖树的下方。

因此,当我执行以下操作时,无论如何,我试图排除的依赖关系最终都会出现在阴影罐中。

<dependencies>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>my-module</artifactId>
        <version>1.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>some.dependency</groupId>
                <artifactId>i-dont-want</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>dependes-on-my-module</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

如果我尝试按如下所示在我的阴影配置中添加排除项,那似乎也不在乎。

<configuration>
    <artifactSet>
        <excludes>
            <exclude>some.dependency:i-dont-want</exclude>
        </excludes>
    </artifactSet>
    ...
</configuration>

我已经尝试过在线搜索,并且可能在堆栈溢出上尝试了很多似乎没有帮助的东西(甚至将其标记为我的个人资料中提供的内容,或者将所有具有传递依赖项的依赖项添加到了我的工件中正在尝试删除但没有运气)。

有什么办法可以迫使这些传递依赖项不添加到我的着色jar中?我只是不想添加它们。此时,我会尝试任何方法...谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最终是一名开发人员在另一个模块中添加了一个阴影插件,最终使自身包含了传递依赖项并得以传递。除了行家以外,似乎还没有办法从轨道上挪动某物,它似乎现在正在工作。