maven中Web项目的依赖关系

时间:2011-02-03 10:49:38

标签: java maven-2 maven jar war

我想创建一个web项目(war)..这将取决于其他jar(java项目)

一旦我构建了我的战争,它应该自动构建jar项目并将其添加到本地存储库。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

你可以有多模块maven项目..希望这就是你要找的......比如下面

  <modules>
    <module>example-jar</module>
  </modules>

check this out: multimodule-web-spring-sect-simple-parent

答案 1 :(得分:2)

是。当然可以,它可能是最常见的用例。大多数Web项目都有一个共享库,其中包含在其他各个项目之间共享的实用程序代码。

有两种方法可以做到这一点:

  1. 创建一个父项目,在该项目下创建您的Web项目和同一级别的其他项目。在您的Web项目中,将Jar项目添加为依赖项。现在,无论何时使用mvn clean install构建父项目,都将在本地存储库中构建和安装这两个项目。

    parent
      +------- pom.xml (has two modules webProject and jarProject)
      +------- webProject
      |          + pom.xml (depends on jarProject)
      +------- jarProject
                 + pom.xml
    
  2. 还有另一种方法,使用Maven reactor plug-in,这个插件使您可以构建项目的所有相关项目。您可以查看详细信息here。特别是reactor:make-dependents

答案 2 :(得分:1)

这没有多大意义。如果WAR依赖于JAR,则需要构建JAR并在构建WAR之前将其添加到本地存储库(而不是之后,正如您在问题中所写的那样)。 (必须按此顺序完成,以便JAR文件可以包含在WAR文件中。)

假设你真的意味着应该首先构建JAR ,这很容易。只需创建一个父模块,其中包含JAR和WAR的子模块,并声明WAR模块依赖于JAR模块。然后构建父模块。

我建议您花点时间阅读“Maven by Example”的Multi-module Projects章节,以及Maven网站上的相关文档。

答案 3 :(得分:1)

如果您的jar项目和war项目遵循相同的发布周期,那么创建一个公共父pom并创建该父项的2个项目模块将是一个好主意。

然后你可以从父目录构建,Maven的reactor将始终确保首先构建jar项目。

如果他们没有遵循相同的发布周期,那么您可能只需要确保以正确的顺序手动构建它们。

如果在Hudson中运行这些构建,maven插件可以确保在上游项目完成后触发下游项目的构建。