1.exclusion
來排除一些不需要同時下載的依賴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的,但是因為一些其他的模塊也依賴了log4j-api,并且兩個log4j-api版本不同,所以我們使用<exclusion>標(biāo)簽排除掉log4j-core所依賴的log4j-api,這樣Maven就不會下載log4j-core所依賴的log4j-api了,也就保證了我們的項目中只有一個版本的log4j-api。
2. scope 依賴范圍來控制哪些依賴 在哪些classpath 中可用
5個屬性值的含義
compile,缺省值,適用于所有階段,會打包進項目。
provided,類似compile,期望JDK、容器或使用者會提供這個依賴。
runtime,只在運行時使用,如JDBC驅(qū)動,適用運行和測試階段。
test,只在測試時使用,用于編譯和運行測試代碼。不會隨項目發(fā)布。
system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。