1.exclusion
來排除一些不需要同時(shí)下載的依賴jar,可以用來解決 jar包沖突
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.10.0</version> <exclusions> <exclusion> <artifactId>log4j-api</artifactId> <groupId>org.apache.logging.log4j</groupId> </exclusion> </exclusions> </dependency>
log4j-core本身是依賴了log4j-api的,但是因?yàn)橐恍┢渌哪K也依賴了log4j-api,并且兩個(gè)log4j-api版本不同,所以我們使用<exclusion>標(biāo)簽排除掉log4j-core所依賴的log4j-api,這樣Maven就不會(huì)下載log4j-core所依賴的log4j-api了,也就保證了我們的項(xiàng)目中只有一個(gè)版本的log4j-api。
2. scope 依賴范圍來控制哪些依賴 在哪些classpath 中可用
5個(gè)屬性值的含義
compile,缺省值,適用于所有階段,會(huì)打包進(jìn)項(xiàng)目。
provided,類似compile,期望JDK、容器或使用者會(huì)提供這個(gè)依賴。
runtime,只在運(yùn)行時(shí)使用,如JDBC驅(qū)動(dòng),適用運(yùn)行和測試階段。
test,只在測試時(shí)使用,用于編譯和運(yùn)行測試代碼。不會(huì)隨項(xiàng)目發(fā)布。
system,類似provided,需要顯式提供包含依賴的jar,Maven不會(huì)在Repository中查找它。