Maven从不同的依赖项中动态排除具有相同名称的类

阿米特·库玛(Amit Kumar)

有两堂课com.package.A,一堂课来自

<dependency>
    <groupId>com.package</groupId>
    <artifactId>art1</artifactId>
</dependency>

还有一个来自

<dependency>
    <groupId>com.package</groupId>
    <artifactId>art2</artifactId>
</dependency>

请注意,工件标识是不同的。

对于不同的Maven配置文件,我想排除一个版本,而保留另一个版本。我正在使用Shade插件。

图那基

使用maven-shade-plugin,可以排除特定依赖的特定类这是在filters属性的帮助下配置的

要使用的存档过滤器。允许您以由使用的复合标识符的形式指定工件,并使用artifactSet一组包含/排除文件模式来过滤将归档文件的哪些内容添加到有色jar中。

在您的情况下,要将类com.package.A从依赖项中排除art2,您可以具有:

<filters>
  <filter>
    <artifact>com.package:art2</artifact>
    <excludes>
      <exclude>com/package/A.class</exclude>
    </excludes>
  </filter>
</filters>

要使其动态化,即在构建时选择com.package.A要保留的类,则无需使用配置文件。您可以使用Maven属性来保存要过滤的依赖项的工件ID。在您的媒体资源中,添加

<properties>
  <shade.exclude.artifactId>art2</shade.exclude.artifactId>
</properties>

shade.exclude.artifactId属性将保存要过滤的依赖项的工件ID。默认情况下,此配置将选择art2然后,在<filter>Shade插件配置中,您可以使用<artifact>com.package:${shade.exclude.artifactId}</artifact>

这是操作中的完整配置:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-shade-plugin</artifactId>
      <version>2.4.3</version>
      <executions>
        <execution>
          <id>shade</id>
          <goals>
            <goal>shade</goal>
          </goals>
          <phase>package</phase>
          <configuration>
            <filters>
              <filter>
                <artifact>com.package:${shade.exclude.artifactId}</artifact>
                <excludes>
                  <exclude>com/package/A.class</exclude>
                </excludes>
              </filter>
            </filters>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
<properties>
  <shade.exclude.artifactId>art2</shade.exclude.artifactId>
</properties>

运行mvn clean package将使用A.classfrom创建一个uber jar,art1因为一个fromart2被排除在外。然后,运行mvn clean package -Dshade.exclude.artifactId=art1将使该时间A.class与依赖项保持一致art2因为art1排除了from项

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何排除页脚中具有相同名称的类?

来自分类Dev

当依赖项中的项具有相同名称时,如何处理冲突?

来自分类Dev

从不同的Mysql表中获取具有相同名称的列

来自分类Dev

从不同元素中反序列化具有相同名称的xml属性

来自分类Dev

当依赖项中的项目具有相同名称时,如何处理冲突?

来自分类Dev

从具有相同名称的库中包含具有相同名称的不同对象。

来自分类Dev

无法在不同模块中创建具有相同名称的私有类

来自分类Dev

Java命名空间-不同包中具有相同名称的两个类

来自分类Dev

基类中具有相同名称但签名不同的非虚拟函数

来自分类Dev

不同后备豆中具有相同名称的日期

来自分类Dev

PHP中具有相同名称的不同元素

来自分类Dev

C ++中具有相同名称但成员不同的struct

来自分类Dev

具有相同名称的不同应用?

来自分类Dev

一个类中是否可能有多个具有相同名称但参数不同的方法?

来自分类Dev

Swift类使用两个在不同目标中具有相同名称的Objective C文件

来自分类Dev

将相同的函数两次添加到具有不同名称的Javascript类中

来自分类Dev

Swift类使用两个在不同目标中具有相同名称的Objective C文件

来自分类Dev

NetBeans-Maven-JaCoCo-无法添加具有相同名称的不同类

来自分类Dev

不同名称空间下具有相同结构的类之间的转换

来自分类Dev

具有相同名称但文件夹不同的Windows Phone类

来自分类Dev

从具有不同名称空间的类动态创建新对象

来自分类Dev

在不同的“ with.name_scope()”中具有相同名称的对象是否不同?

来自分类Dev

如何用C ++编写几乎相同的具有相同名称的相同函数来处理不同的类参数?

来自分类Dev

来自具有相同名称的不同maven模块的文件不能共存于使用maven程序集插件创建的jar文件中

来自分类Dev

在Elasticsearch中具有不同索引/类型的类型中具有相同名称的字段名称

来自分类Dev

Delphi中不同单位中具有相同名称的常量

来自分类Dev

C#中不同面板中具有相同名称的控件

来自分类Dev

XSD具有相同名称但类型不同的多个元素

来自分类Dev

缓存具有相同名称的图像的不同目录

Related 相关文章

  1. 1

    如何排除页脚中具有相同名称的类?

  2. 2

    当依赖项中的项具有相同名称时,如何处理冲突?

  3. 3

    从不同的Mysql表中获取具有相同名称的列

  4. 4

    从不同元素中反序列化具有相同名称的xml属性

  5. 5

    当依赖项中的项目具有相同名称时,如何处理冲突?

  6. 6

    从具有相同名称的库中包含具有相同名称的不同对象。

  7. 7

    无法在不同模块中创建具有相同名称的私有类

  8. 8

    Java命名空间-不同包中具有相同名称的两个类

  9. 9

    基类中具有相同名称但签名不同的非虚拟函数

  10. 10

    不同后备豆中具有相同名称的日期

  11. 11

    PHP中具有相同名称的不同元素

  12. 12

    C ++中具有相同名称但成员不同的struct

  13. 13

    具有相同名称的不同应用?

  14. 14

    一个类中是否可能有多个具有相同名称但参数不同的方法?

  15. 15

    Swift类使用两个在不同目标中具有相同名称的Objective C文件

  16. 16

    将相同的函数两次添加到具有不同名称的Javascript类中

  17. 17

    Swift类使用两个在不同目标中具有相同名称的Objective C文件

  18. 18

    NetBeans-Maven-JaCoCo-无法添加具有相同名称的不同类

  19. 19

    不同名称空间下具有相同结构的类之间的转换

  20. 20

    具有相同名称但文件夹不同的Windows Phone类

  21. 21

    从具有不同名称空间的类动态创建新对象

  22. 22

    在不同的“ with.name_scope()”中具有相同名称的对象是否不同?

  23. 23

    如何用C ++编写几乎相同的具有相同名称的相同函数来处理不同的类参数?

  24. 24

    来自具有相同名称的不同maven模块的文件不能共存于使用maven程序集插件创建的jar文件中

  25. 25

    在Elasticsearch中具有不同索引/类型的类型中具有相同名称的字段名称

  26. 26

    Delphi中不同单位中具有相同名称的常量

  27. 27

    C#中不同面板中具有相同名称的控件

  28. 28

    XSD具有相同名称但类型不同的多个元素

  29. 29

    缓存具有相同名称的图像的不同目录

热门标签

归档