我有一个核心webapp,并希望通过几个可选模块(jar文件)对其进行扩展。 这些模块可以包含Servlet,过滤器等。
发展:
由于这些模块是可选的,我认为使用maven模块和父模块是不可取的, 因为父级总是包含所有模块,我不希望每个部署方案都有父级。
每个可选的webapp模块都是一个普通的maven项目......但是我如何管理核心和模块总是使用相同的依赖项呢? 我是否必须为包含所有依赖项和其他共享设置(Java版本等)的两者创建父pom?
部署:
这里有什么建议?总是重新包装战争?将模块jar复制到爆炸的WEB-INF / lib中? 它也可以在运行时部署吗?
答案 0 :(得分:2)
听起来您正在寻求单独配置和构建所有可能的配置,而不是使用或制作一些真正动态的模块加载系统。
在这种情况下,最简单的方法是每个配置都有一个war-project:
你应该有一个模块pom 项目,除了构建所有其他项目之外什么都不做。这可能是父项目,但我会使用一个单独的项目。编辑:我会将此项目放在您的存储库的根目录中,并将所有其他项目放在子文件夹中。这与IDE和发布工具相得益彰。
您应该有一个父pom 项目,它可以管理Maven <dependencyManagement>
来管理所有项目中的所有依赖项版本,并且具有所有其他项目所需的任何常规构建配置。除模块项目之外的所有其他项目都将此作为父项。
对于许多模块中使用的常用代码,您可能需要一个常见的 jar 项目。
您的核心应用程序应该有一个 jar 项目。
每个模块都应该有一个 jar 项目。
对于每个配置,您需要一个 war - 项目,它只是一个声明所需依赖项的pom文件,可能是某些属性文件。他们将构建您的产品。
如果您想对war-projects(部署,测试等)进行特殊配置,您可以为它们创建一个中间父级。它应该将普通父母作为父母。
现在,您可以使用模块项目构建所有内容,并以每个配置的war文件结束。