【问题标题】:Java Webapp modulesJava Web 应用程序模块
【发布时间】:2018-03-22 12:05:41
【问题描述】:

我有一个核心 web 应用程序,并希望通过几个可选模块(jar 文件)对其进行扩展。 这些模块可以包含 Servlet、Filters 等。

发展:

由于模块是可选的,我认为将 maven 模块与父模块一起使用不是可行的方法, 因为父级始终包含所有模块,我不希望每个部署方案都有一个父级。

所以每个可选的 webapp 模块都是一个普通的 maven 项目......但是我如何管理核心和模块总是使用相同的依赖项? 我是否必须为两者创建一个包含所有依赖项和其他共享设置(Java 版本等)的父 pom?

部署:

这里有什么建议?总是重新包装战争?将模块 jar 复制到分解的 WEB-INF/lib 中? 它也可以在运行时部署吗?

【问题讨论】:

  • 如何将组件连接在一起?
  • 连线?可选模块只是 WEB-INF/lib 中的 jars。
  • 为您想要创建的每场最终战争创建一个项目。使用梅斯的任何其他方法。会比只做这个更麻烦。

标签: java maven web-applications


【解决方案1】:

听起来您正在寻找单独配置和构建所有可能的配置,而不是使用或制作一些真正动态的模块加载系统。

在这种情况下,最简单的方法是每个配置都有一个战争项目:

您应该有一个 module pom-项目,它除了构建所有其他项目之外什么都不做。这可能是父项目,但我会使用一个单独的项目。编辑:我会将此项目放在存储库的根目录中,并将所有其他项目放在子文件夹中。这与 IDE 和发布工具相得益彰。

您应该有一个 parent pom-项目,该项目执行 Maven <dependencyManagement> 以管理所有项目中的所有依赖项版本,并具有所有其他项目所需的任何通用构建配置。除模块项目外的所有其他项目都将其作为父项目。

您可能需要一个通用 jar-项目来存放许多模块中使用的通用代码。

您的核心应用程序应该有一个 jar-项目。

每个模块都应该有一个 jar-项目。

对于每个配置,您都需要一个 war 项目,它只是一个 pom 文件,用于声明所需的依赖项和一些属性文件。他们将构建您的产品。

如果您想为战争项目(部署、测试等)进行特殊配置,您可以为它们创建一个中间父级。它应该有一般的父母作为父母。

现在您可以使用模块项目构建所有内容,并最终为每个配置生成一个战争文件。

【讨论】:

  • 啊...依赖管理,不是依赖!
猜你喜欢
  • 2013-08-15
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2012-03-23
  • 2019-11-29
  • 2010-12-06
相关资源
最近更新 更多