我有一个web应用程序项目,现在正在成长为包含自己的ejb和jsf网页的独立web子模块。
项目结构看起来像下面的东西。
- 父项目
- 通用模块
- creditcard-module
- bankpayment-module
- some-more-payment-modules……
- war模块
除了公共模块,每个模块都有自己的ejb和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 |
其他业务模块也一样,而且一个主war/ear模块包含所有的war。
重要:是否可以共享持久单元?cdi会跨模块工作吗(最后是一个耳朵/战争)?
本质上,这个想法是根据业务需求而不是纯粹的技术层来模块化项目。
如何在maven中实现这个?
您可以使用Maven Web覆盖完成您想要的:
http://maven.apache.org/plugins/maven-war-plugin/overlays.html它们允许您通过依赖项在项目中传播Web资源,类似于源文件和类路径资源如何通过jar文件传播并通过依赖项传播到war文件。
您可以创建一个Enterprise Archive(。使用Apache Maven ear插件:
Java EE应用程序在企业存档(EAR)中交付一个标准的Java Archive (JAR)文件,扩展名为.ear。使用EAR文件和模块使得组装许多使用一些相同组件的不同Java EE应用程序。没有需要额外的编码;这只是一个组装(或)的问题将各种Java EE模块打包到Java EE EAR文件中。(来源:Java EE 5 docs)
创建一个封装为和的新模块。使用maven-ear-plugin,配置你想要组装在一起的模块。