java - 阴影 jar 中的 Maven 依赖排除

标签 java maven dependencies dependency-exclusion

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

我无法发布整个 pom,但本质上,每个模块都依赖于其他模块,最后我们有一个最终模块,它将所有内容捆绑在一起,这就是我的个人资料所在的位置。我添加了一个依赖项列表,这些依赖项都包含我不想添加到着色 jar 中的 Artifact 的排除项,我使用 dependency:tree 添加了每个对排除项具有传递依赖项的模块,并为其添加了一个依赖项条目及其自身的排除项,我已将一个 artifactSet 添加到了阴影插件配置中以排除这些 Artifact ,并且我添加了强制插件,以便在该 Artifact 存在时使构建失败。

我不想添加的 Artifact 仍在添加到阴影 jar 中。

<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>

这是可行的,但问题是我还需要对依赖树中进一步依赖于上述模块的模块有依赖关系。

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

<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>

我尝试过在线搜索,并且可能尝试了大量有关堆栈溢出的内容,但似乎没有帮助(甚至标记我的个人资料中提供的内容,或者添加对我试图删除但没有运气的 Artifact 具有传递依赖关系的所有依赖项)。

有什么方法可以强制这些传递依赖项不添加到我的着色 jar 中吗?我只是不想添加它们;此时我会尝试任何事情...提前感谢您的帮助。

最佳答案

最终成为一名开发人员,在另一个模块中添加了一个阴影插件,最终获得了包含在其自身中并传递的传递依赖项。除了 Maven 似乎没有办法从轨道上攻击某些东西之外,它现在似乎正在工作。

关于java - 阴影 jar 中的 Maven 依赖排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561542/

相关文章:

java - StringEscapeUtils 取消转义除换行符 (\n) 之外的所有内容

java - 在由 Maven 驱动的简单演示应用程序的 JAR 中包含 Postgres 的 JDBC 驱动程序

gcc - make 删除依赖文件

java - aspectj-weaver.jar 是做什么的?

java - 显示图像列表时出现应用程序小部件问题

java - 在 OSGI 应用程序中提供 EntityManager 的最佳实践

java - 如果 session 为真,则将用户信息发送到下一个 Activity - android

java - maven从哪里获取${}包围的变量的值?

maven - IntelliJ Tomcat部署大资源

java - 由 Maven 运行时集成测试随机失败或抛出错误