2010-01-12 76 views
78

我一直在閱讀關於Maven reactor的內容,並對其術語用法感到困惑。我已經讀過一個多模塊是一個反應堆,您可以操縱Maven反應堆,並且該反應堆是一個插件。什麼是反應堆?Maven中的「reactor」是什麼?

回答

136

反應器是Maven的一部分,它允許它在一組模塊上執行一個目標。如在Maven 1.x的documentation on multi-modules builds上述(反應器的概念是在Maven的1.x中已經存在),而模塊的工作分立單元,它們可以利用反應器中以同時建立他們和聚集:

反應堆根據每個項目在其各自項目描述符中聲明的依賴關係確定正確的構建順序,然後執行一組陳述的目標。它可以用於建設項目和其他目標,如網站生成。

如前所述,反應器是什麼使多模塊構建可能的:它計算模塊之間的依賴關係的有向圖,得出從該圖的構建順序(這就是爲什麼循環依賴是不允許的,這是個好東西反正),然後在模塊上執行目標。換句話說,一個「多模塊建立」是「反應器構建」和「反應器構建」是「多模塊建立」。

在Maven 2.x中,多模塊構建的支持已經得到了很大的改進,並且反應器對Maven用戶變得透明。但它仍然存在,並在引擎蓋下使用。

2008年9月(即推出Maven 2之後的很長一段時間),已經創建了一個reactor plugin以使與Maven反應器更緊密地(再次)相互作用成爲可能。 Brett Porter在Reactor: My New Favourite Maven Plugin上發表了博客。

現在大多數反應器插件功能現在都支持(自Maven 2.1.0以來)。見Maven Tips and Tricks: Advanced Reactor Options

+9

爲什麼maven的網站說,這個插件是「退休」? – 2015-02-21 14:56:52

+2

因爲反應器插件是一個插件(僅)與實際反應器「交談」。所以不是反應堆本身已經退役了,而是一個與之相關的插件。 – Lonzak 2017-01-20 13:40:08

2

反應器是一個項目有多個模塊時使用。

通過反應器中進行的工作原理是:

  • 採集模塊細節
  • 排序順序根據依賴關係
  • 構建以

項目使用Maven 2.1版本開始,新的Maven命令行選項允許您操作Maven將構建多模塊項目的方式。這些新的選項是:

-rf, --resume-from 
    Resume reactor from specified project 
-pl, --projects 
    Build specified reactor projects instead of all projects 
-am, --also-make 
    If project list is specified, also build projects required by the list 
-amd, --also-make-dependents 
    If project list is specified, also build projects that depend on projects on the list 

source