maven - 如何从战争中排除整个模块

时间:2015-10-06 10:31:59

标签: java maven maven-war-plugin

我有以下Maven项目结构:

  • 项目A
    • sub-projectB< - jar
    • sub-projectC< - war
    • sub-projectD< - war

sub-projectCsub-projectD需要sub-projectB作为依赖项。但sub-projectCsub-projectD构建的战争不应包含sub-projectB的依赖关系。 jar将在稍后的类路径中单独包含(这是因为sub-projectB是大jar> 100MB并且在战争中包装它将非常昂贵在复制战争的大小和时间方面在部署期间到另一个位置)。

如何从sub-projectBsub-projectC的war包中排除sub-projectD的依赖关系?

执行此操作的一种方法是排除maven-war-plugin中的jar列表。但是我们必须指定每个jar名称或使用通配符。我们不能直接排除子模块依赖项。有没有更简单的方法呢?

1 个答案:

答案 0 :(得分:3)

这正是范围provided的用途。此范围的每个依赖项将在编译时使用,但它不会包含在最终的战争中(因为运行时容器提供)。

因此,对sub-projectB的依赖应该是sub-projectCsub-projectD pom:

<dependency>
    <groupId>...</groupId>
    <artifactId>sub-projectB</artifactId>
    <version>...</version>
    <scope>provided</scope>
</dependency>