我有一个 Web 应用程序,我想将其分成三部分。我注意到它有两个完全不同的功能,但核心架构(用于表示层、Spring 容器、DAO 等的库)是共享的。
一件将是“主”,具有从演示到 DAO 的完整垂直堆栈,但仅适用于所有“子项目”的通用部分。
另外两个模块本身就是“子项目”。
现在的问题是:是否可以让 Maven 将所有 3 个部分(模块?)视为一个整体,以便将它们构建在一起,最重要的是将它们打包在一起?我需要最终结果是与目录树类似的单一 war :
war
+ WEB-INF
+ classes
+ subproject1
+ subproject2
+ view-shared
+ css
+ ...
+ js
+ ...
+ subproject1
+ myPage.jsp
+ subproject2
+ anotherPage.jsp
你明白了。
最佳答案
您可以使用 Maven 程序集插件来完成。
另一种解决方案是:
- A
common
项目(打包jar
) - A
subproject1
(包装war
)有common
作为依赖。 - A
subproject2
(包装war
)有common
作为依赖。 - 最后,一个
web
项目(包装war
)同时具有subproject1
和subproject2
作为依赖项。
Maven 何时构建 web
项目,它将首先解压缩 subproject1
和 subproject2
web/target
中的 war 目录,然后复制 web
的内容在这个 target
中转换自己目录。
这意味着如果一个文件存在于subproject1
在web
项目,然后是 web
托管的文件将删除由 subproject1
托管的那个在最终的 WAR 文件中。
您可以找到有关 Maven WAR overlays 的更多信息.
关于java - Maven - 一个包的多个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341819/