我在应用服务器上部署了多个应用程序,并且都使用几乎相同的 JAR 文件集。这些应用程序被创建为 Maven 项目。我想在我的应用服务器上部署这些应用程序,而不必将它们与任何 JAR 文件捆绑在一起。相反,我会将所有这些 JAR 文件添加到应用服务器上,分别添加到其自己的 lib 目录或这些应用程序可以使用的其他目录中。
在这种情况下,我如何配置我的 Maven 项目,以便它使用工件来编译我的项目,但是当它创建一个 WAR 文件时,它会排除所有这些。
我在应用服务器上部署了多个应用程序,并且都使用几乎相同的 JAR 文件集。这些应用程序被创建为 Maven 项目。我想在我的应用服务器上部署这些应用程序,而不必将它们与任何 JAR 文件捆绑在一起。相反,我会将所有这些 JAR 文件添加到应用服务器上,分别添加到其自己的 lib 目录或这些应用程序可以使用的其他目录中。
在这种情况下,我如何配置我的 Maven 项目,以便它使用工件来编译我的项目,但是当它创建一个 WAR 文件时,它会排除所有这些。
这就是provided
范围的意义所在。来自Mavenprovided
文档:
这很像 compile,但表明您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java 企业版构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递。
您是否使用 maven-assembly-plugin 创建 WAR 文件?如果是这样,您可以排除正在复制的依赖项。