目錄
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>