JavaMaven为一个包提供了多个模块
我有一个web应用程序,我想分为三部分。我注意到它有两个完全不同的功能,但核心架构(表示层中使用的libs、Spring容器、DAO等)是共享的
其中一个将是“主”,从演示到DAO都有完整的垂直堆栈,但只适用于所有“子项目”的通用部分
其他两个模块将是“子项目”本身
现在的问题是:是否有可能让Maven处理所有3个部分(模块?)作为一个整体,以便将它们构建在一起,最重要的是打包在一起?我需要最终结果是一个目录树类似于以下内容的单一war:
war
+ WEB-INF
+ classes
+ subproject1
+ subproject2
+ view-shared
+ css
+ ...
+ js
+ ...
+ subproject1
+ myPage.jsp
+ subproject2
+ anotherPage.jsp
你明白了
# 1 楼答案
是的,你可以用maven assembly plugin来做。为所有三个模块构建单独的maven模块,再加上一个依赖于其他模块的forth模块,并使用assembly插件构建所需的结构
# 2 楼答案
您可以使用Maven assembly插件来实现这一点
另一个解决方案是:
common
项目(打包jar
)common
作为依赖项的subproject1
(打包war
)李>common
作为依赖项的subproject2
(打包war
)李>web
项目(打包war
),它同时具有subproject1
和subproject2
作为依赖项李>当Maven构建
web
项目时,它将首先在web/target
目录中解压subproject1
和subproject2
WAR,然后将web
项目本身的内容复制到此target
目录中这意味着,如果一个文件存在于
subproject1
和web
项目中,那么由web
托管的文件将删除最终WAR文件中由subproject1
托管的文件您可以找到有关Maven WAR overlays的更多信息