2017-05-28 79 views
3

這可能是Maven內部的一個問題,我沒有太多的運氣搜索和找到答案。簡而言之,我有興趣瞭解Maven實際執行的每個階段或目標的命令。例如,mvn package創建jar文件,所以我認爲它必須在某個時候調用jar -cf命令。Maven在階段或目標中執行的實際命令

Maven如此設計,這個命令不會出現在.pom文件中。但Maven實際上運行了哪些命令以實現特定的階段和目標?有沒有辦法看到他們?

回答

1

所有插件都是用Java(或基於JVM的語言)編寫的,所以如果你可以閱讀它 - 你可以找出它的功能。以下是maven-jar-plugin的源代碼:link1,link2

但是爲了達到那裏,您需要確定在運行階段時執行哪些插件和目標。有多種方式:

  1. 在輸出Maven的說,它執行哪些目標,例如:

Maven的資源 - 插件:2.6:資源(缺省資源)@模塊名稱

  • 如果產生有效的POM,你就可以看到所有的插件和階段就必然要:mvn help:effective-pom。有些插件具有默認階段,因此用戶不必明確指定它們 - 因此您必須查看插件元信息或源代碼。
  • 默認插件和目標是由包裝定義的。對於默認包裝,您可以查看default-bindings.xml(角色提示是包裝名稱)。
  • 在知道執行了哪些插件和目標之後,您可以查看每個插件的源代碼(源代碼通常是打開的)並查看其Mojos的實際源代碼。

    如果您決定學習代碼,在運行mvn命令時能夠對其進行調試會很有用。爲此,您可以使用mvnDebug而不是mvn

    更多信息:click1click2

    +0

    生命週期:https://maven.apache.org/ref/3.5.0/maven-core/lifecycles。 html和綁定https://maven.apache。組織/ REF/3.5.0/maven的核心/默認bindings.html。 – khmarbaise

    1

    創建jar文件的調用是在生命週期中綁定的maven-jar-plugin中完成的。您可以對幕後發生的事情做mvn -X clean package。但是你不會看到很多命令(除了javac編譯)...你是什麼意思:Maven is opinionated so by design, this command doesn't show up in the .pom filelife cycles顯示運行哪種階段bindings顯示哪些插件在哪個階段運行。

    如果你想看看到插件的源插件都可以在這裏找到:https://maven.apache.org/plugins/ 在右邊你可以看到鏈接,鏈接到其相應的版本控制系統。

    每個插件都有例如行家-JAR-插件鏈接到源代碼:https://maven.apache.org/plugins/maven-jar-plugin/source-repository.html

    相關問題