我有一個多模塊maven項目,我想讓我所有的子模塊使用maven-compiler-plugin
,在根pom.xml
中指定。我應該在哪裏放置maven-compiler-plugin
聲明(根pom.xml
):在<plugins>
部分或<pluginManagement>
部分?問題也與maven-release-plugin
有關。應該在哪裏放置maven-compiler-plugin聲明:在<plugins>或<pluginManagement>中?
回答
這2個部分(plugins
和pluginManagement
)有略微不同的目的。
第一個(plugins
)用於指定項目(以及從父項目繼承的所有子項目)的構建過程。如果您在本節中包含一些插件,它將在每個子項目中執行,而不管其類型如何。
第二個(pluginManagement
)用於爲從父項目繼承的所有項目(例如,插件版本和配置)指定通用插件設置。
說到你提到的2個插件。 maven-compiler-plugin
是一個默認插件,無論您是否指定,它都將被執行。將它包含在pluginManagement
中並在其中指定其配置是有意義的。然而,默認情況下,maven-release-plugin
未綁定到任何生命週期階段。因此,如果您希望在您的所有子項目中執行它,則必須將其添加到plugins
部分。
這取決於你在做什麼。如果您將它們包含在plugins
部分中,則它們將針對所有POM執行... ,其中包括父項。如果您只希望孩子POM執行插件目標,那麼您應該將它們放在pluginManagement
之下。但是,在這種情況下,您必須在每個孩子POM中啓用它們。
也就是說,最簡單的事情是先嚐試plugins
。如果沒有構建失敗,那麼你很好。否則,您將需要移動一些或全部到pluginManagement
。
因此,在'
- 1. 使用<ui:composition>模板時,我應該在哪裏聲明<f:metadata>?
- 2. IEnumerable在哪裏<T> .OrderBy聲明?
- 3. 在使用sshpass循環時,應該在哪裏放置<< EOF?
- 4. 我應該在哪裏返回聲明
- 5. 應該在哪裏聲明類對象?
- 6. 在哪裏放置函數聲明? VB.NET
- 7. 在C中聲明一個指針時,你應該在哪裏放置這個*?
- 8. 應該在哪裏放置配置?
- 9. 我應該在哪裏放置在FBConnect
- 10. 我應該在哪裏放置在phabricator
- 11. 我在哪裏放置<script> newBoard();</script>?
- 12. 我應該在哪裏放置索引?
- 13. 我應該在哪裏放置DLL?
- 14. 我應該在哪裏放置ANNOTATE_ITERATION_TASK?
- 15. 我應該在哪裏放置.htaccess?
- 16. 我應該在哪裏放置scriptmanager
- 17. MEF:我應該在哪裏放置CompositionContainer?
- 18. 我應該在哪裏放置docker-compose.yml
- 19. 我應該在哪裏放置界面?
- 20. 我應該在哪裏放置代碼?
- 21. omniauth.rb應該放在哪裏?
- 22. beans.xml應該放在哪裏?
- 23. gradle.jar應該放在哪裏?
- 24. ViewModels應該放在哪裏?
- 25. 在django中,'class Meta:`聲明放置在哪裏?
- 26. 放在哪裏聲明的目標C
- 27. 如何判斷'<type'something'>`是在哪裏聲明的?
- 28. 放在哪裏<select>標籤
- 29. 我應該在哪裏聲明Sugarcrm中的全局變量
- 30. 我應該在哪裏放置log4net config - App.config或AppName.dll.log4net?
謝謝你的明確答案。你能解釋一下,爲什麼'maven-compiler-plugin'不是默認執行,而不是'maven-release-plugin'?或者我可以在生命週期階段看到默認執行的插件列表? – MyTitle
不客氣。默認插件列表及其目標取決於項目包裝。你可以閱讀更多關於它[這裏](http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings)(實際上,整個頁面值得一讀)。 –
另外呢'maven-surfire-plugin'?在你的解釋之後,我認爲它應該放在pluginManagement裏,因爲它限制了maven的「測試」階段..這是真的嗎? – MyTitle