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

Maven阴影插件用法

严修德
2023-03-14

以下部分显示了my pom.xml中shade插件的配置:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <artifactSet>
            <excludes>
              <exclude>META-INF/*.SF</exclude> 
              <exclude>META-INF/*.DSA</exclude> 
              <exclude>META-INF/*.RSA</exclude> 
              <exclude>META-INF/ECLIPSE*</exclude> 
          </excludes>
          </artifactSet>
        </configuration>
      </execution>
    </executions>
  </plugin>

然而,一些被排除的文件(似乎??)被偷偷地放入输出jar文件中:

02:19:43/xt $jar -tvf target/ignitedemo-1.0-SNAPSHOT.jar | grep  META | egrep "RSA|DSA|SF"
  9958 Sun Jul 05 02:19:26 PDT 2015 META-INF/ECLIPSEF.SF
  5639 Sun Jul 05 02:19:26 PDT 2015 META-INF/ECLIPSEF.RSA

那么,阴影插件配置中有什么不正确的地方呢?

共有2个答案

施敏达
2023-03-14

使用项目集可以指定应排除哪些项目。您必须使用过滤器,请参阅 http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html

(ps.你怎么会得到你的pom配置

殷浩慨
2023-03-14

您需要使用

<filter>
  <artifact>*:*</artifact>
  <excludes>
    <exclude>META-INF/*.SF</exclude> 
    <exclude>META-INF/*.DSA</exclude> 
    <exclude>META-INF/*.RSA</exclude> 
    <exclude>META-INF/ECLIPSE*</exclude> 
  </excludes>
</filter>

 类似资料:
  • 在我当前的项目设置中,maven shade插件的执行非常不稳定。这个插件看起来像是在我构建父模块之后执行的,但是在那个实例中执行之后,它在独立构建子模块时无法执行。 我的父母是 还有孩子pom 以及在具有上述pom的子模块上运行“安装”目标时的构建输出 如您所见,尽管在< code >中定义了执行,maven shade插件并没有执行

  • 我需要从shade插件中排除log4j工件,以避免log4j漏洞,但是,artifactSet下的exclude标记似乎不起作用。有没有解决这个问题的建议? 我不断发现以下错误:未能执行目标组织。阿帕奇。专家插件:maven shade插件:3.2.4:shade(默认值)on project:目标组织的执行默认值。阿帕奇。专家插件:maven shade插件:3.2.4:shade失败:插件组织

  • 我试图使用maven-shade-plugin来区分Java6和Java7工件。从这个链接我的理解是原来的神器会被阴影的那个替换掉 然而,它正在安装没有阴影分类器。下面是我的shade插件配置:

  • 有问题的错误消息是 从文件夹中的工作正常。我的项目结构是 还有由定义 由下式定义 这是一个比这个问题中的版本修复升级晚得多的版本 插件在子模块pom而不是父pom中,因为这里的错误 我尝试删除

  • 在maven包中,我有一个奇怪的行为。我有一个工件“A”,它取决于“B”。 在“A”中,我有一个包含persistence.xml的META-INF文件夹,在“B”中,我也有一个包含persistence.xml的META-INF文件夹。 这是pom关于shade插件和依赖项的文件A 考虑到“B”也是一个阴影工件,如何从“B”中排除持久.xml文件?

  • 阴影 Unity 的灯光可以将 阴影 从一个游戏对象投射到自身的其他部分或是附近的其他游戏对象上。阴影以『扁平』的方式体现游戏对象的尺寸和位置,因此可以为场景添加一定程度的深度和真实感。 场景视图中的游戏对象正在投射阴影 阴影如何工作? 考虑一种最简单的情况,在场景中只有单个光源。光线从光源出发并沿着直线传播,最终可能会碰撞到场景中的游戏对象。一旦光线碰撞到某个游戏对象,光线将无法继续传播和照亮前