maven scope,provided和compile區別,optional,classifier,systemPath等用法介紹

maven生命週期介紹

編譯(mvn compile)
測試(mvn test-compile和mvn test)
打包(mvn package和mvn install和mvn deploy)
運行(mvn exec)

scope介紹

compile

默認scope,參與編譯、測試、打包、運行。

test

僅參與測試。

runtime

參與打包與運行,但不參與編譯(也就是在開發時不能直接用,只能通過反射才能使用,常用於jdbc實現庫)。

provided

參與編譯、測試、運行,但不會被打包進jar或war(也就是說,運行時由別人提供,常用於應用服務器已經提供的庫,如jsp相關庫、servlet相關庫)。

system

與compile相同,但不從maven倉庫中下載,而是從systemPath屬性進行獲取。
必須配合systemPath屬性一起使用。

import

只在dependencyManagement的中使用,能解決maven單繼承問題,import依賴關係實際上並不參與限制依賴關係的傳遞性。

systemPath介紹

必須配合<scope>system</scope>使用
示例:

<dependency>
			<groupId>com.aliyun</groupId>
			<artifactId>aliyun-java-sdk-core</artifactId>
			<version>4.1.0</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/aliyun-java-sdk-core-4.1.0.jar</systemPath>
		</dependency>

${project.basedir}表示項目根目錄。

optional介紹

當該依賴成爲間接依賴時,是否讓該依賴不成爲強制依賴。
例如,a依賴b,b依賴c,
在b項目中,使用optional爲true方式依賴c,那麼a項目打包時,可選是否打包c,
如果b項目中,使用optional爲false方式依賴c,那麼a項目打包時,必須將c打包進去。

classifier介紹

指定使用哪個版本的jdk來編譯此依賴。

<classifier>jdk15</classifier>

exclusions和exclusion介紹

剔除當前依賴中指定的依賴。

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<!-- 剔除logging -->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
				<!-- 剔除tomcat -->
				<exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion>
			</exclusions>
		</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章