可以通过配置 WAR 插件的归档器来自定义清单。有关可用的不同配置选项的完整信息,请查看Maven Archiver的文档。
为 WAR 生成清单类路径类似于为 JAR 生成清单类路径,但有一些细微差别,因为您通常不希望清单类路径和WEB-INF/lib目录中都有 JAR。自定义 WAR 插件的归档器:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>现在,您可以按照这些示例控制WEB-INF/lib和清单类路径中包含哪些依赖项。Maven 将遵循传递依赖树,直到它到达范围为“提供”的工件。
注意:没有显示如何在WEB-INF/lib中包含依赖项,但不在清单类路径中。
<project>
...
<dependencies>
<dependency>
<groupId>org.foo</groupId>
<artifactId>bar-jar1</artifactId>
<version>${pom.version}</version>
<optional>true</optional>
<!-- goes in manifest classpath, but not included in WEB-INF/lib -->
</dependency>
<dependency>
<groupId>org.foo</groupId>
<artifactId>bar-jar2</artifactId>
<version>${pom.version}</version>
<!-- goes in manifest classpath, AND included in WEB-INF/lib -->
</dependency>
<dependency>
<groupId>org.foo</groupId>
<artifactId>bar-jar3</artifactId>
<version>${pom.version}</version>
<scope>provided</scope>
<!-- excluded from manifest classpath, and excluded from WEB-INF/lib -->
</dependency>
...
</dependencies>
...
</project>查看使用清单的指南以获取更多示例。