我有以下Maven项目结构:
sub-projectB
< - jar sub-projectC
< - war sub-projectD
< - war sub-projectC
和sub-projectD
需要sub-projectB
作为依赖项。但sub-projectC
和sub-projectD
构建的战争不应包含sub-projectB
的依赖关系。 jar将在稍后的类路径中单独包含(这是因为sub-projectB
是大jar> 100MB并且在战争中包装它将非常昂贵在复制战争的大小和时间方面在部署期间到另一个位置)。
如何从sub-projectB
和sub-projectC
的war包中排除sub-projectD
的依赖关系?
执行此操作的一种方法是排除maven-war-plugin
中的jar列表。但是我们必须指定每个jar名称或使用通配符。我们不能直接排除子模块依赖项。有没有更简单的方法呢?
答案 0 :(得分:3)
这正是范围provided
的用途。此范围的每个依赖项将在编译时使用,但它不会包含在最终的战争中(因为运行时容器提供)。
因此,对sub-projectB
的依赖应该是sub-projectC
和sub-projectD
pom:
<dependency>
<groupId>...</groupId>
<artifactId>sub-projectB</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>