1

我有简单的 Maven 项目结构:

mainProject
|-- subProject1
|   |-- subSubProject
|-- subProject2

关键是我有 mainProject ,其中包含每个子项目中使用的依赖项(这些依赖项对于每个子项目都是通用的),但我不希望它们在编译和构建时包含在我的 WAR 文件中(范围提供)。另外,我不想在每个子项目中声明依赖项,因为我已经在 mainProject 中声明了它们。

WAR 文件在其构建文件中包含所有子项目库。

谢谢

4

2 回答 2

1

在我看来,这个问题可以有两种解决方案。

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 容器将提供所需的类。

于 2013-07-29T14:39:31.130 回答
0

我在 Maven 方面没有太多经验,但我记得在我使用过的 poms 文件中看到了父 pom。您似乎喜欢将主项目 pom 作为父 pom 包含在内,然后在各自的 pom 中添加子项目特定的依赖项。我认为父 pom 中的 scope=provided 仍然会阻止公共依赖项成为最后的 war 文件。

于 2013-07-29T15:16:32.253 回答