我读过:
- Exclude dependency in child pom inherited from parent pom
- Multi-module project: Exclude a dependency from the parent pom
- Exclude artifacts inherited from a parent POM?
- Exclude directive within parent POM
- How to exclude a dependency from parent's project in Maven?
我得出的结论是,没有办法排除从父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打包。
- 谢谢-谢谢
1条答案
按热度按时间t2a7ltrp1#
我认为您需要将exclude编写为
<exclude>*:log4j</exclude>