我需要从shade插件中排除log4j工件,以避免log4j漏洞,但是,artifactSet下的exclude标记似乎不起作用。有没有解决这个问题的建议?
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
~~
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>*:log4j-core:jar</exclude>
</excludes>
</artifactSet>
~~~
我不断发现以下错误:未能执行目标组织。阿帕奇。专家插件:maven shade插件:3.2.4:shade(默认值)on project:目标组织的执行默认值。阿帕奇。专家插件:maven shade插件:3.2.4:shade失败:插件组织。阿帕奇。专家plugins:maven shade plugin:3.2.4或其依赖项之一无法解决:找不到工件组织。阿帕奇。登录中。log4j:log4j核心:jar:2.13.0
我遇到了同样的问题,最后通过maven shade plugin
config解决了这个问题。在您的情况下,要排除log4j core
,您的过滤器配置必须放在artifactSet
之外,如下所示。
>
查找log4j核心
类路径前缀,例如org/slf4j/
;
将这个类路径前缀放入过滤器排除规则中,运行cmdmvn package
使用vim攻击你的目标。jar
要检查排除成功与否,您会发现org/slf4j
已经消失。
欲了解更多排除信息,请参阅https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>org/slf4j/**</exclude>
</excludes>
</filter>
我试图使用maven-shade-plugin来区分Java6和Java7工件。从这个链接我的理解是原来的神器会被阴影的那个替换掉 然而,它正在安装没有阴影分类器。下面是我的shade插件配置:
以下部分显示了my pom.xml中shade插件的配置: 然而,一些被排除的文件(似乎??)被偷偷地放入输出jar文件中: 那么,阴影插件配置中有什么不正确的地方呢?
在我当前的项目设置中,maven shade插件的执行非常不稳定。这个插件看起来像是在我构建父模块之后执行的,但是在那个实例中执行之后,它在独立构建子模块时无法执行。 我的父母是 还有孩子pom 以及在具有上述pom的子模块上运行“安装”目标时的构建输出 如您所见,尽管在< code >中定义了执行,maven shade插件并没有执行
有问题的错误消息是 从文件夹中的工作正常。我的项目结构是 还有由定义 由下式定义 这是一个比这个问题中的版本修复升级晚得多的版本 插件在子模块pom而不是父pom中,因为这里的错误 我尝试删除
在我们的模块(比如说XYZ)中,我们包含了一个maven toolchains插件的依赖项,以使我们的Jenkins构建使用特定的JDK版本运行。但是,当我们在另一个项目中将XYZ模块作为依赖项包含时,一旦我们包含了这个工具链依赖项,它就会进一步引入许多其他依赖项(见下面的屏幕截图)。 其中一些依赖于工具链,如和会导致SLF4J:类路径包含多个SLF4J绑定等问题。当我们部署应用程序时。 我们为工
在maven包中,我有一个奇怪的行为。我有一个工件“A”,它取决于“B”。 在“A”中,我有一个包含persistence.xml的META-INF文件夹,在“B”中,我也有一个包含persistence.xml的META-INF文件夹。 这是pom关于shade插件和依赖项的文件A 考虑到“B”也是一个阴影工件,如何从“B”中排除持久.xml文件?