<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
<scope>compile</scope>
<systemPath>./commons-lang3.jar</systemPath>
<exclusions>
<exclusion>
<artifactId>aopalliance</artifactId>
<groupId>aopalliance</groupId>
</exclusion>
</exclusions>
<optional>false</optional>
</dependency>
<scope>
:表明此依赖的作用域。
compile:默认。表明此依赖在任何时刻都生效。包括编译、测试、运行。
test :表明此依赖只在测试时生效。例如junit.jar。最终的打包是不会被包含的。
provided:依赖在目标环境中已经存在,例如servlet-api.jar,它在tomcat里已经提供了,打包时是不需要打到war文件中的。
runtime:依赖在目标环境运行时才需要,编译时不需要。例如MySQL-connector.jar等这些数据库驱动。因为这些依赖是具体的实现,是不会被代码直接使用的。
system:此依赖是来自外部jar,而不是maven仓库
<exclusion>
:用来排除传递的依赖。
例如project1依赖jarA,jarA 依赖jarB。当引入jarA时,jarB也会被引入(在maven中,这被称为依赖传递<transferdependency>
)。在某些情况下如果不想jarB被引入,则可以使用exclusion标签来进行控制。