log4j 是否可以排除来自java starter父pom的maven依赖jar?

mi7gmzs6  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(167)

我读过:

我得出的结论是,没有办法排除从父pom继承的特定依赖项。我使用的是maven,父pom是不可编辑的。
因此,我考虑在将jar打包到目标jar之前,将其本身排除在依赖项之外。

My parent pom is `sdk-java-starter-parent` that comes from an internal library.

<parent>
        <groupId>abc.def.xyz</groupId>
        <artifactId>sdk-java-starter-parent</artifactId>
        <version>6.1.0.4</version>
    </parent>

该pom声明了log4-1.2.7依赖项,我希望排除该依赖项,且根本不将其导入到我项目中。

<dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

如果我直接从spring的组中导入父pom,我可以使用spring-boot-maven-plugin来排除它,但是因为我是从一个内部库导入父pom,所以没有使用或可能使用那个插件。
我考虑过使用maven着色器插件和其他重新打包插件,以便在打包之前对jar进行“着色”:

<excludes>
<exclude>log4j-1.2.17.jar</exclude> (tried also `**/log4j-1.2.17.jar`)
</excludes>

但效果不太好。我试过使用<dependencyManagement>,但它不适合,因为我不想覆盖版本,我只想删除整个依赖关系。完全排除它或删除它的jar。
老实说,我一点也不知道,如果可能的话,我很乐意听到你的一些建议。
如果不可能的话,我还有什么其他的选择呢?我怎样才能避免收到那个log4j jar呢?

最终的应用程序是一个由JAR组成的Docker容器。

正在使用的插件包括:

  • maven jar插件
  • maven安全插件
  • docker-maven插件
  • 神气活现的插件

我不确定其中哪一个负责构建应用程序和jar打包。

  • 谢谢-谢谢
t2a7ltrp

t2a7ltrp1#

我认为您需要将exclude编写为<exclude>*:log4j</exclude>

相关问题