Maven - 一个包的几个模块

时间:2010-02-26 13:19:22

标签: java maven-2

我有一个网络应用程序,我想分成三个部分。我注意到它有两个完全不同的功能,但核心架构(表示层中使用的库,Spring容器,DAO等)是共享的。

一个是“主人”,从演示到DAO的完整垂直堆栈,但仅限于所有“子项目”的共同点。

其他两个模块本身就是“子项目”。

现在的问题是:是否有可能让Maven将所有3件(模块?)视为一体,以便将它们构建并最重要的包装在一起?我需要最终结果是与目录树类似的单一战争:

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

你明白了。

2 个答案:

答案 0 :(得分:3)

您可以使用Maven程序集插件执行此操作。

另一个解决方案是:

  • common项目(打包jar
  • subproject1为依赖关系的war(打包common)。
  • subproject2为依赖关系的war(打包common)。
  • 最后,web项目(打包war)同时包含subproject1subproject2

当Maven构建web项目时,它将首先解压缩subproject1目录中的subproject2web/target个战争,然后复制{web内容1}}在target目录中投影自己。

这意味着如果subproject1web项目中存在文件,则web托管的文件将删除最终WAR中由subproject1托管的文件文件。

您可以找到有关Maven WAR overlays

的更多信息

答案 1 :(得分:0)

是的,您可以使用maven assembly plugin执行此操作。为这三个模块构建单独的maven模块,再加上第四个依赖于其他模块的模块,并使用组件插件构建您需要的结构。