我有一个网络应用程序,我想分成三个部分。我注意到它有两个完全不同的功能,但核心架构(表示层中使用的库,Spring容器,DAO等)是共享的。
一个是“主人”,从演示到DAO的完整垂直堆栈,但仅限于所有“子项目”的共同点。
其他两个模块本身就是“子项目”。
现在的问题是:是否有可能让Maven将所有3件(模块?)视为一体,以便将它们构建并最重要的包装在一起?我需要最终结果是与目录树类似的单一战争:
war
+ WEB-INF
+ classes
+ subproject1
+ subproject2
+ view-shared
+ css
+ ...
+ js
+ ...
+ subproject1
+ myPage.jsp
+ subproject2
+ anotherPage.jsp
你明白了。
答案 0 :(得分:3)
您可以使用Maven程序集插件执行此操作。
另一个解决方案是:
common
项目(打包jar
)subproject1
为依赖关系的war
(打包common
)。subproject2
为依赖关系的war
(打包common
)。web
项目(打包war
)同时包含subproject1
和subproject2
。当Maven构建web
项目时,它将首先解压缩subproject1
目录中的subproject2
和web/target
个战争,然后复制{web
内容1}}在target
目录中投影自己。
这意味着如果subproject1
和web
项目中存在文件,则web
托管的文件将删除最终WAR中由subproject1
托管的文件文件。
您可以找到有关Maven WAR overlays。
的更多信息答案 1 :(得分:0)
是的,您可以使用maven assembly plugin执行此操作。为这三个模块构建单独的maven模块,再加上第四个依赖于其他模块的模块,并使用组件插件构建您需要的结构。