簡體   English   中英

當使用minimalJar函數時,Maven陰影插件如何確定將哪些依賴項放入最終的jar中?

[英]How does the Maven shade plugin decide which dependencies to put into the final jar when using the minimizeJar function?

我有一個帶有一個Java文件的Maven項目,該項目使用Maven陰影插件創建一個uber jar。 我的目標是創建一個盡可能小的可執行jar。 我決定在插件中使用minimumJar參數來縮小我的jar。 該參數是否僅放入運行所需的依賴項或編譯所需的依賴項?

答案是您鏈接到的頁面的進一步:

燈罩:燈罩

全名:org.apache.maven.plugins:maven-shade-plugin:2.3:shade

說明:執行着色的Mojo,委派給“着色器”組件。

屬性:

  • 需要執行一個Maven項目。
  • 需要范圍內的工件的依賴關系解析:運行時。
  • 目標是線程安全的,並支持並行構建。
  • 默認情況下綁定到生命周期階段:程序包。

因此,所包含的工件將是運行時的(因此也將是編譯時的)。

編輯:有關范圍的完整說明,請參閱依賴機制簡介-依賴范圍

在Maven中,當您進行依賴關系解析時,它使用范圍的概念-最重要的三個是(從該頁面開始):

  • 編譯 -這是默認范圍,如果未指定則使用。 編譯依賴項在項目的所有類路徑中均可用。 此外,這些依賴項會傳播到相關項目。
  • 運行時 -此作用域指示依賴關系不是編譯所必需的,而是執行所必需的。 它在運行時和測試類路徑中,但不在編譯類路徑中。
  • 測試 -此范圍表明該依賴關系對於正常使用該應用程序不是必需的,並且僅在測試編譯和執行階段可用。

因此,當您在src / main / java下編譯源代碼時,將使用具有編譯范圍的依賴項。 在運行應用程序時,將依賴項與編譯運行時范圍一起使用。 編譯測試時(在src / test / java下 ),將使用編譯范圍和測試范圍。 當您使用surefire運行測試時,將把依賴項與compiletestruntime范圍一起使用。

這意味着minimalJar將包含編譯運行時范圍的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM