我想创建一个web项目(war)..这将取决于其他jar(java项目)
一旦我构建了我的战争,它应该自动构建jar项目并将其添加到本地存储库。
有人可以帮忙吗?
答案 0 :(得分:3)
你可以有多模块maven项目..希望这就是你要找的......比如下面
<modules>
<module>example-jar</module>
</modules>
答案 1 :(得分:2)
是。当然可以,它可能是最常见的用例。大多数Web项目都有一个共享库,其中包含在其他各个项目之间共享的实用程序代码。
有两种方法可以做到这一点:
创建一个父项目,在该项目下创建您的Web项目和同一级别的其他项目。在您的Web项目中,将Jar项目添加为依赖项。现在,无论何时使用mvn clean install
构建父项目,都将在本地存储库中构建和安装这两个项目。
parent
+------- pom.xml (has two modules webProject and jarProject)
+------- webProject
| + pom.xml (depends on jarProject)
+------- jarProject
+ pom.xml
还有另一种方法,使用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插件可以确保在上游项目完成后触发下游项目的构建。