我有一个网络应用程序项目,现在正在发展为包含自己的ejbs和jsf网页的单独的web子模块。
项目结构将如下所示。
除了通用模块之外的每个模块都有自己的ejbs和jsf页面。
如果可能的话,我需要每个模块都是独立的战争,并与战争模块建立一场大战。
修改
项目的当前结构
war module --
--| persistenceunit |
--| entities |
--| ejbs |
--| cdi managed beans |
--| controllers |
--| jsf-pages |
--| resources |
不同的业务单位只是按包分开。现在需要能够分别对不同的业务单元进行版本化,即每个业务单元的不同mvn项目。
实现的结构:
Common module --
--| persistenceunit |
--| dao helpers |
--| common ejb services |
--| common managed beans |
--| jsf-templates |
--| common resources |
Creditcard module --
--| related entities |
--| ejb services |
--| related managed beans |
--| jsf-pages |
--| specific resources |
对于其他商业模块也是如此,此外还有一个主战/耳模块来包含所有战争。
重要提示:是否可以共享持久性单元? cdi会在整个模块中工作吗(最后是单耳/战争)?
本质上,我们的想法是根据业务需求而不是纯粹的技术层来模块化项目。
我应该如何用maven实现这个目标?
答案 0 :(得分:1)
您可以使用Maven Web叠加层完成您想要的任务:
http://maven.apache.org/plugins/maven-war-plugin/overlays.html
它们允许Web资源通过依赖项传播项目,类似于源文件和类路径资源通过jar文件传播到war文件中的依赖关系。
答案 1 :(得分:0)
您可以使用Apache Maven EAR Plugin创建 Enterprise Archive (.ear文件):
Java EE应用程序在Enterprise Archive(EAR)中提供 file,扩展名为.ear的标准Java Archive(JAR)文件。运用 EAR文件和模块可以组装一些 使用某些相同组件的不同Java EE应用程序。没有 需要额外的编码;这只是一个组装问题(或 将各种Java EE模块打包成Java EE EAR文件。 (来源:Java EE 5 docs)
创建包含 ear 的新模块。 Use maven-ear-plugin ,configure the modules,您希望将它们组合在一起。