我有兩個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