maven - 如何从 war 中排除整个模块
maven - how to exclude an entire module on from war
我有以下 Maven 项目结构:
- 项目A
sub-projectB
<- jar
sub-projectC
<- war
sub-projectD
<- war
sub-projectC
和 sub-projectD
需要有 sub-projectB
作为依赖项。但是sub-projectC
和sub-projectD
构建的war不应该包含sub-projectB
的依赖。该 jar 稍后将单独包含在类路径中(这是因为 sub-projectB
是大于 100MB 的大 jar 并且使用 war 将其打包在大小和复制所需的时间方面都非常昂贵war 在部署期间从一个位置到另一个位置。
如何从 sub-projectC
和 sub-projectD
的 war 包中排除 sub-projectB
的依赖项?
一种方法是排除 maven-war-plugin
中的 jar 列表。但是我们必须指定每个 jar 名称或使用通配符。我们不能直接排除一个子模块的依赖。有更简单的方法吗?
这正是范围 provided
的用途。每个具有此范围的依赖项将在编译时使用,但不会包含在最终的 war 中(因为它是由 运行 时间 提供 容器)。
因此,对 sub-projectB
的依赖应该是 sub-projectC
和 sub-projectD
pom:
<dependency>
<groupId>...</groupId>
<artifactId>sub-projectB</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>
我有以下 Maven 项目结构:
- 项目A
sub-projectB
<- jarsub-projectC
<- warsub-projectD
<- war
sub-projectC
和 sub-projectD
需要有 sub-projectB
作为依赖项。但是sub-projectC
和sub-projectD
构建的war不应该包含sub-projectB
的依赖。该 jar 稍后将单独包含在类路径中(这是因为 sub-projectB
是大于 100MB 的大 jar 并且使用 war 将其打包在大小和复制所需的时间方面都非常昂贵war 在部署期间从一个位置到另一个位置。
如何从 sub-projectC
和 sub-projectD
的 war 包中排除 sub-projectB
的依赖项?
一种方法是排除 maven-war-plugin
中的 jar 列表。但是我们必须指定每个 jar 名称或使用通配符。我们不能直接排除一个子模块的依赖。有更简单的方法吗?
这正是范围 provided
的用途。每个具有此范围的依赖项将在编译时使用,但不会包含在最终的 war 中(因为它是由 运行 时间 提供 容器)。
因此,对 sub-projectB
的依赖应该是 sub-projectC
和 sub-projectD
pom:
<dependency>
<groupId>...</groupId>
<artifactId>sub-projectB</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>