2010-02-26 86 views
1

我有一个Web应用程序,我想分成三个部分。我注意到它有两个完全不同的功能,但核心体系结构(表示层,Spring容器,DAO等中使用的库)是共享的。Maven - 一个包的几个模块

其中一幅是“主”,通过DAO从演示完整的垂直堆栈,但只针对什么是共同所有的“子项目”。

另外两个模块将是“子项目”自己。

现在的问题是:是否有可能得到Maven来对待所有3个(模块?)合为一体,使他们建立和最重要的封装在一起?我需要最终的结果是与目录树类似的单一战争:

war 
+ WEB-INF 
    + classes 
    + subproject1 
    + subproject2 
+ view-shared 
    + css 
    + ... 
    + js 
    + ... 
+ subproject1 
    + myPage.jsp 
+ subproject2 
    + anotherPage.jsp 

你明白了。

回答

3

你可以使用Maven assembly插件。

另一个解决方案是为具有:

  • common项目(包装jar
  • subproject1(包装war),其具有作为common依赖性。
  • subproject2(包装war),其具有作为common依赖性。
  • 最后,一个web项目(包装war)同时具有subproject1subproject2作为依赖关系。

当Maven将建设web项目,它会先解压缩在web/target目录都subproject1subproject2战争,然后web项目本身的内容复制此target目录下。

这意味着,如果一个文件中subproject1web项目存在,那么由web主办的文件将删除subproject1最终WAR文件主持的一个。

您可以找到有关Maven WAR overlays更多信息。

0

是的,你可以做到这一点与maven assembly plugin。为所有三个模块构建单独的Maven模块,以及依赖于其他模块的第四个模块,并使用Assembly插件构建所需的结构。

相关问题