1. 程式人生 > >spring boot 項目添加maven依賴時provided

spring boot 項目添加maven依賴時provided

artifact 下載 compile 應用 也不會 jdb 詳解 jdk sco

spring boot 項目是自帶tomcat 的,但是我們有時候是需要把項目打包成war 然後放到獨立的tomcat中運行的,這個時候我們就需要將它自帶的tomcat給排除開,這時候我們就可以使用<scope>provided</scope>來實現

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

provided 依賴只有在當JDK 或者一個容器已提供該依賴之後才使用。比如說,我們開發了一個web 應用,在編譯

classpath 中需要可用的Servlet API 來編譯一個servlet,但是我們並不需要打包好的WAR 中包含這個Servlet API,因為這個

Servlet API JAR 可以由我們的應用服務器或者servlet 容器提供。<scope>provided</scope>提供範圍的依賴在編譯classpath的

時候是可用的,這種依賴不是傳遞性的,當然也不會被打包到war當中

我們來看一下scope的幾個屬性詳解:

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

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

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

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

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

spring boot 項目添加maven依賴時provided