我有一个核心的webapp,并希望通过几个可选模块(jar文件)来扩展它。这些模块可以包含Servlets、过滤器等。
发展:
由于这些模块是可选的,所以我认为使用带有父模块的maven模块并不可行,因为父模块总是包含所有模块,而且我不希望在每个部署场景中都有一个父模块。
所以每个可选的webapp模块都有一个正常的maven项目..。但是如何管理核心和模块总是使用相同的依赖关系呢?我是否必须为两者创建一个父pom,其中包含所有依赖项和其他共享设置(Java版本等)?
部署:
这里的推荐是什么?总是重新包装战争?将模块jar复制到已爆炸的WEB/lib中?它也能在运行时部署吗?
发布于 2018-03-22 12:42:31
听起来,您似乎希望单独配置和构建所有可能的配置,而不是使用或制作一些真正动态的模块加载系统。
在这种情况下,最简单的方法是让每个配置都有一个war项目:
您应该有一个模块pom-project,它只会构建所有其他项目。这可能是父项目,但我会使用单独的项目。编辑:我会把这个项目放在你的存储库的根部,并把所有其他的项目放在子文件夹中。这与IDE和发布工具非常匹配。
您应该有一个父-project,它执行Maven <dependencyManagement>来管理所有项目中的所有依赖版本,并且具有所有其他项目所需的任何通用构建配置。除模块项目外,所有其他项目都有此父项目。
对于许多模块中使用的通用代码,您可能需要一个通用的jar-project。
您的核心应用程序应该有一个jar-project。
每个模块都应该有一个jar-project。
对于每个配置,您都需要一个war-project,它只不过是一个pom文件,声明了所需的依赖项,并且可能需要一些属性文件。他们会生产你的产品。
如果您想为war项目(部署、测试等)进行特殊的配置。你可以为他们做一个中介父母。它应该有一般的父母作为父母。
现在,您可以使用模块项目构建所有内容,并为每个配置生成一个war文件。
https://stackoverflow.com/questions/49428274
复制相似问题