Maven基礎

  • 關於插件和生命週期

    maven的大多數功能都是通過插件完成的,插件裏包含了很多目標可以執行,例如這種格式調用目標 mvn pluginID:targetID。至於生命週期就是一組階段的集合,比如mvn clean是clean生命週期中的clean階段,這些階段在一個生命週期中是有序的,執行後面階段之前會自動執行前面的所有階段。而具體的階段和插件的目標是有綁定關係的,也即是執行階段時就是執行了插件的某些目錄,例如下圖:

    圖片.png

    也就是當執行mvn package 等價於mvn resources:resources compiler:compile resources:testTesources

    surefire:test jar:jar

  • scope的分類

    1.compile:默認值 他表示被依賴項目需要參與當前項目的編譯,還有後續的測試,運行週期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去

    2.test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit

    3.runtime:表示被依賴項目無需參與項目的編譯,不過後期的測試和運行週期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段

    4.provided:打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等週期。相當於compile,但是打包階段做了exclude操作

    5.system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。需要添加systemPath的屬性來定義路徑

  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章