Table標簽的scope屬性,maven中scope屬性

 2023-10-18 阅读 28 评论 0

摘要:在POM 4中,中還引入了,它主要管理依賴的部署。目前可以使用5個值: compile,缺省值,適用于所有階段,會隨著項目一起發布。provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。 編譯時使用&#x

在POM 4中,中還引入了,它主要管理依賴的部署。目前可以使用5個值:

  • compile,缺省值,適用于所有階段,會隨著項目一起發布。
  • provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。 編譯時使用,不會隨項目發布。
  • runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。 不會隨項目發布。
  • test,只在測試時使用,用于編譯和運行測試代碼。不會隨項目發布。
  • system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。

依賴范圍控制哪些依賴在哪些classpath 中可用,哪些依賴包含在一個應用中。讓我們詳細看一下每一種范圍:

compile (編譯范圍)

compile是默認的范圍;如果沒有提供一個范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath 中可用,同時它們也會被打包。

provided (已提供范圍)

provided 依賴只有在當JDK 或者一個容器已提供該依賴之后才使用。例如, 如果你開發了一個web 應用,你可能在編譯 classpath 中需要可用的Servlet API 來編譯一個servlet,但是你不會想要在打包好的WAR 中包含這個Servlet API;這個Servlet API JAR 由你的應用服務器或者servlet 容器提供。已提供范圍的依賴在編譯classpath (不是運行時)可用。它們不是傳遞性的,也不會被打包。

		<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope></dependency>

runtime (運行時范圍)

Table標簽的scope屬性,runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC
驅動實現。

test (測試范圍)

test范圍依賴 在一般的編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。

system (系統范圍)

system范圍依賴與provided 類似,但是你必須顯式的提供一個對于本地系統中JAR 文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven 也不會在倉庫中去尋找它。如果你將一個依賴范圍設置成系統范圍,你必須同時提供一個 systemPath 元素。注意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的 Maven 倉庫中引用依賴)。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/148935.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息