我有简单的 Maven 项目结构:
mainProject
|-- subProject1
| |-- subSubProject
|-- subProject2
关键是我有 mainProject ,其中包含每个子项目中使用的依赖项(这些依赖项对于每个子项目都是通用的),但我不希望它们在编译和构建时包含在我的 WAR 文件中(范围提供)。另外,我不想在每个子项目中声明依赖项,因为我已经在 mainProject 中声明了它们。
WAR 文件在其构建文件中包含所有子项目库。
谢谢
在我看来,这个问题可以有两种解决方案。
1.)您可以更改范围以进行编译,并且在构建war文件时,您可以像这样使用maven-war-plugin在war文件中排除所有不需要的jar。
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<packagingExcludes>WEB-INF/lib/xyz.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
2.) 如果它们是第 3 方特定的 jar,那么您可以将它们移动到服务器 lib 目录,并且在运行时您的 Web 容器将提供所需的类。
我在 Maven 方面没有太多经验,但我记得在我使用过的 poms 文件中看到了父 pom。您似乎喜欢将主项目 pom 作为父 pom 包含在内,然后在各自的 pom 中添加子项目特定的依赖项。我认为父 pom 中的 scope=provided 仍然会阻止公共依赖项成为最后的 war 文件。