使用maven排除一些第三方jar

使用maven排除一些第三方jar,maven,ear,Maven,Ear,我正在使用maveneartag构建一个ear。 声明的依赖项之一是将其可传递依赖项添加到生成的ear中。有没有办法在生成的ear中排除这一点 也就是说,我的EAR pom依赖于模块a,这在树的某个地方依赖于模块X,模块X被打包到生成的EAR中 有没有办法不在ear中包含此模块(模块X) 在我的pom中直接为模块X添加一个excludes标记不起作用。使用maven,一切都是可能的。您只需简单地在耳朵的pom中添加一个标签排除项,类似于: <dependency> <gr

我正在使用maven
ear
tag构建一个ear。 声明的依赖项之一是将其可传递依赖项添加到生成的ear中。有没有办法在生成的ear中排除这一点

也就是说,我的EAR pom依赖于模块a,这在树的某个地方依赖于模块X,模块X被打包到生成的EAR中

有没有办法不在ear中包含此模块(模块X)


在我的pom中直接为模块X添加一个
excludes
标记不起作用。

使用maven,一切都是可能的。您只需简单地在耳朵的pom中添加一个标签排除项,类似于:

<dependency>
   <groupId>my.group</groupId>
   <artifactId>module_A</artifactId>
   <exclusions>
      <exclusion>
         <groupId>my.group</groupId>
         <artifactId>module_X</artifactId>
      </exclusion>
   </exclusions>
</dependency>

我的团队
模块A
我的团队
模块X

如果依赖项在父POM中的作用域为
编译
,并且您需要在EAR中提供它,则您可以在需要更改其作用域的子POM中使用依赖项管理:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.group</groupId>
            <artifactId>transitive-dependency</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

com.group
传递依赖
1
假如

如果父POM中声明的依赖项没有被其所有子项使用,您可能应该重新考虑是否应该在该父POM中声明该依赖项。或者它确实是一个依赖项,但您只是不想将它打包到EAR中,因为它是提供的?这个标记很有效,我在许多EAR项目中使用它。可能是因为另一个工件(也打包在模块_A中)需要模块_X进行编译,因此您也必须在其依赖项中排除它。它可以工作,我在指定要排除的模块的artifactId时犯了一个错误。(使用了xx_1.0.1而不是xx_1.0.2)。