2015-10-06 49 views
0

我有以下Maven项目结构:行家 - 如何排除对整个模块从战争

  • 项目A
    • sub-projectB < - 罐子
    • sub-projectC < - 战争
    • sub-projectD < - 战

sub-projectCsub-projectD需要有sub-projectB作为依赖关系。但是由sub-projectCsub-projectD构建的战争不应包括sub-projectB的依赖关系。该jar将在稍后分开包含在类路径中(这是因为sub-projectB是大型jar> 100MB,并且在战争中将其打包将在部署期间将战争从一个位置复制到另一个位置所需的大小和时间方面非常昂贵)。

如何从sub-projectCsub-projectD的战包中排除sub-projectB的依赖关系?

其中一种方法是排除maven-war-plugin中的罐子列表。但是我们必须指定每个jar名称或使用通配符。我们不能直接排除子模块的依赖关系。有没有更简单的方法来做到这一点?

回答

2

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

这样,依赖性sub-projectB应该是,在sub-projectCsub-projectD POM:

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

感谢一束Tunaki。这工作像一个魅力。 – Majjige