有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

你明白了


共 (2) 个答案

  1. # 1 楼答案

    是的,你可以用maven assembly plugin来做。为所有三个模块构建单独的maven模块,再加上一个依赖于其他模块的forth模块,并使用assembly插件构建所需的结构

  2. # 2 楼答案

    您可以使用Maven assembly插件来实现这一点

    另一个解决方案是:

    • 一个common项目(打包jar
    • 具有common作为依赖项的subproject1(打包war
    • 具有common作为依赖项的subproject2(打包war
    • 最后,一个web项目(打包war),它同时具有subproject1subproject2作为依赖项

    当Maven构建web项目时,它将首先在web/target目录中解压subproject1subproject2WAR,然后将web项目本身的内容复制到此target目录中

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

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