我有两个maven项目project/foo/pom.xml
和project/bar/pom.xml
。我有foo
取决于bar, and I want that every time
foo/pom.xml compiles, it'll automatically compile
bar`。maven项目如何依赖另一个本地maven项目?
我该怎么用maven做到这一点?
更新:我掖他们两个到父项目,但后来,我将要如果我要运行一个子项目mvn jetty:run
吗?
我有两个maven项目project/foo/pom.xml
和project/bar/pom.xml
。我有foo
取决于bar, and I want that every time
foo/pom.xml compiles, it'll automatically compile
bar`。maven项目如何依赖另一个本地maven项目?
我该怎么用maven做到这一点?
更新:我掖他们两个到父项目,但后来,我将要如果我要运行一个子项目mvn jetty:run
吗?
这是不可能单独使用maven。您可以得到的最接近的数字是modules of an aggregator POM,因此您可以使用单个命令构建两者。请注意,mvn install
已经考虑自上一次构建以来是否发生过更改,因此您可以节省几个CPU周期。
设置都建立在Jenkins,可同时检测项目间的依赖
自动构建从模块依赖关系链
詹金斯读取你的项目的依赖关系,从你的POM,如果它们也建立在Jenkins的 上,触发器的设置方式使得在其中一个依赖关系 中的新构建将自动启动项目的新构建。
如果两个Maven项目是密切相关的(一起发布,共享相同的版本号),那么或许他们真的在同一个项目的两个模块?
如果是这样的情况下阅读下面的文档,关于如何创建一个父POM准则:
您可以将它们合并成一个项目,两个模块。
一个例子项目结构:
parent (pom) |- foo (jar) |- bar (jar)
在父POM:
<groupId>org.me</groupId>
<artifactId>parent-project</artifactId>
<packaging>pom</packaging>
<modules>
<module>foo</module>
<module>bar</module>
</modules>
在每个子POM:
<artifactId>foo</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.me</groupId>
<artifactId>parent-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
要生成项目(两个模块)与Maven ,请从父目录执行此操作:
$ mvn install
但是如果我想在模块'bar'上运行'mvn jetty:run'呢? – 2012-07-27 11:25:05
如果'bar'是一个战争项目(并且'foo'是一个jar,'bar'取决于'foo'),相同的项目结构将起作用。在这种情况下,就像通常那样,从'bar'目录运行'mvn jetty:run'。 – Daniel 2012-07-27 11:59:46
首先,按照Daniel的说法设置多模块构建。然后转到包含父POM的目录。然后,例如之前安装有自动安装酒吧富,太,类型:
mvn --also-make --projects foo install
这将检查依赖反应器内,然后解析运行上栏安装的生命周期就运行安装生命周期之前在foo上。
这适用于任何生命周期或目标。不过,请注意,如果您指定jetty:run,那么这个目标将在两个项目中运行,这可能不是您想要的。
您可以找到有关此功能在这里的更多信息:http://maven.apache.org/guides/mini/guide-multiple-modules.html
完全不起作用,因为'jetty'插件在所有模块中都不可用。没有其他解决方案吗? – 2012-07-27 11:48:23
见上面,我怎么可以运行'命令mvn码头:run'从模块'bar'取决于'foo'? – 2012-07-27 11:25:42