当前位置: 首页 > 知识库问答 >
问题:

Maven阴影插件不排除工件

韩鸿波
2023-03-14

我需要从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

共有1个答案

步兴德
2023-03-14

我遇到了同样的问题,最后通过maven shade pluginconfig解决了这个问题。在您的情况下,要排除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文件?