如何正确设置这个maven多项目设置(war + jars +静态文件)?

时间:2013-06-08 19:15:30

标签: spring maven dependencies war maven-assembly-plugin

我们有一个(直到现在)小项目,它由4个eclipse项目组成。 main项目包含所有需要的库和Ant脚本。

现在我们想要将这个项目转换为Maven,同时保持项目结构。

工作原理:

  1. Ant脚本将所有项目(没有main)编译为jar个文件
  2. Ant脚本将所有jar个文件复制到lib项目的main文件夹
  3. Ant脚本将模块中的一些静态文件(html,css,js等)复制到main项目的一些相应文件夹中
  4. Ant生成war项目
  5. main存档

    Maven的(可能)问题:

    • 所有项目都依赖于main项目
      • 所以我认为不可能使用Maven的正常编译行为

    我读了一下Maven的可能性,看起来像 assembly插件可以解决这个问题?!但我不知道如何让所有这些东西工作......

    我想到了这个项目布局:

    + parent-pom (with packaging: pom)
      - main-war (packaging: war)
      - module1 (packaging: jar, depends on main-war)
      - module2 (packaging: jar, depends on main-war)
      - module3 (packaging: jar, depends on main-war and module1)
    

    现在parent-pom必须有<build>指令和assembly插件吗?

    请帮帮我。谢谢:))

1 个答案:

答案 0 :(得分:1)

我首先建议更改项目的结构,这意味着具有以下文件夹布局:

  +-- root (pom.xml packaging: pom)
       +--- module1 (packaging: jar: depends on: module-common)
       +--- module2 (packaging: jar: depends on: module-common)
       +--- module3 (packaging: jar: depends on: module1, module-common)
       +--- module-common (packaging: jar)
       +--- module-war (packaging: war, depends on: module1, module2, module3)

所提到的对war模块的依赖没有意义,因为通常你有一个模块依赖于另一个而不是war mdoule。因此,要解决该问题,最简单的解决方案是引入一个单独的模块 - 通用,它应该采用所有模块通用的代码。 war模块包含html,静态文件等文件夹,其布局如下:

 .
 |-- pom.xml
 `-- src
     `-- main
         |-- java
         |   `-- com
         |       `-- example
         |           `-- projects
         |               `-- SampleAction.java
         |-- resources
         |   `-- images
         |       `-- sampleimage.jpg
         `-- webapp
             |-- WEB-INF
             |   `-- web.xml
             |-- index.html
             `-- jsp
                 `-- websource.jsp

如果您处理上述结构中的内容,则不需要使用程序集插件或任何插件来复制文件等,它将默认处理。因此,您将获得一个包含所需内容的war文件。