2016-03-31 77 views
4

我在多模塊項目中使用maven-deploy-plugin,deployAtEnd屬性設置爲trueMaven deploy插件 - deployAtEnd不工作

在根項目執行mvn deploy後,部署插件是每個子項目執行的 - 我可以看到: [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ subproject-name --- [INFO] Deploying package:subproject-name:v1.1 at end 最後調用是根項目: [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ parent-project --- [INFO] Deploying package:parent-project:v1.1 at end ,這一切,不執行實際的部署。

如何使部署插件在deployAtEnd=true的多模塊項目中正確工作?

+0

而在所有模塊的末尾,您看不到將工件部署到存儲庫的輸出?你是否使用自定義的Maven插件來定義自己的生命週期? – khmarbaise

+0

@khmarbaise正確,沒有與部署相關的輸出。我沒有使用任何自定義插件(至少我認爲是這樣,我怎麼能驗證它?) –

+0

你可以顯示完整的日誌輸出,否則很難看到有什麼問題? – khmarbaise

回答

2

今天我解決了我的項目中的同樣的問題。

問題模塊有擴展(<extension>標籤)。他們違反了maven-deploy-plugin中構建模塊的計數器。

要解決這個問題,我將<extension>移到了根POM上。

+0

太棒了!謝謝! –

2

今天,當我們恰好碰到了這個問題,我發現在Maven的部署,插件相關的問題:

https://issues.apache.org/jira/plugins/servlet/mobile#issue/MDEPLOY-193

傑羅姆Joslet移出這個問題:

我今天發出這個問題,並找到了解決方法。

maven-deploy-plugin將其狀態記錄在靜態變量中。一個用於 堆疊部署請求(deployRequests),另一個用於計數 準備好的項目(readyProjectsCounter)。發生問題時, 是用於計算就緒項目的多個靜態變量。這個 發生在有多個類加載器加載部署插件的類時。這導致多個類實例和多個靜態變量實例。某個模塊在一個實例上計數,另一個模塊在另一個上計數。

其結果是部署插件 從不刷新其掛起的部署請求,因爲沒有計數器等於 反應器中的項目數。

如下面的 文檔中mentionned:https://svn.apache.org/repos/infra/websites/production/maven/content/reference/maven-classloading.html

對於使用創建擴展,插件類加載器 連接到項目的類加載器的項目。這使插件代碼可以訪問 Maven API包和項目構建 擴展名導出的包。 Maven將爲每個 獨特的插件+依賴關係+構建擴展組合創建一個並且僅有一個類加載器。

Maven的保證將會有一個且只有一個項目的類加載器爲每個 一套獨特的項目建設擴展和相同的類加載器將 由具有集合構建擴展的所有項目中使用。

解決方法是在父項目中聲明所有擴展插件及其所有額外的 <dependencies>。這確保了所有模塊中使用相同的 類加載器來加載插件。