Here是jfrom artifactory插件概述。他們告知:爲什麼在驗證階段調用jfrog maven artifactory插件?
插件的調用階段默認爲「驗證」,我們建議您不要更改它,以便在Maven構建的生命週期中儘早調用插件。
因爲我明白(我錯了嗎?)這個插件是用來部署maven項目的。所以這個插件應該「等待」,直到所有的測試都通過了,源代碼才被編譯,並且只在解除部署階段打包和部署工件,不是嗎?
問題:爲什麼它鏈接到驗證階段?
Here是jfrom artifactory插件概述。他們告知:爲什麼在驗證階段調用jfrog maven artifactory插件?
插件的調用階段默認爲「驗證」,我們建議您不要更改它,以便在Maven構建的生命週期中儘早調用插件。
因爲我明白(我錯了嗎?)這個插件是用來部署maven項目的。所以這個插件應該「等待」,直到所有的測試都通過了,源代碼才被編譯,並且只在解除部署階段打包和部署工件,不是嗎?
問題:爲什麼它鏈接到驗證階段?
事實上,artifactory-maven-plugin
應用了與通常的mojo(Maven目標)實現不同的模式:它依賴於Maven Lifecycle listeners/extensions。
綜觀其github repository的魔力實際上是:
maven-deploy-plugin
default binding通過setting的maven.deploy.skip
屬性true
BuildInfoRecorderLifecycleParticipant
到validate
相結合是必要的,有效地跳過默認deploy
行爲,並註冊了自己的聽衆。
我已經看過該插件的內部source code,發現這條線:
String deployGoals = 'deploy,maven-deploy-plugin'
此字段在recordBuildInfo
方法中使用。這種方法註冊類BuildInfoRecorder
作爲偵聽器,其中calls真實deploy
方法當session ends。
這是一個100%正確的答案。我們這樣做的原因是一次部署多項目構建的所有模塊,防止構建失敗部署結果。 – JBaruch