<optional>true</optional>
ccc依賴了bbb,bbb依賴了aaa,那麼ccc可能用到aaa,也可能用不到aaa
bbb中引入的aaa需要加上<optional>true</optional>,如果ccc需要aaa的功能,需要ccc自己引入aaa
這就是可選依賴
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<scope>provided</scope>
</dependency>
scope=compile,表示編譯、測試、運行都需要
scope=test,表示測試用例編譯、執行需要,junit
scope=provided,表示編譯、測試階段需要這個包,運行時不需要,會由容器提供,如servlet-api
scope=runtime,表示運行時才需要,比如mysql、oracle等方言包
scope=system,表示該包需要從本地具體的路徑提供,配合<systempath>使用,比如自己打的jar包