一个java 项目有n多对应的路径 比如 编译,测试,运行
maven的依赖作用域 scope 也与此相关
作用域(Scope) | 描述 |
---|---|
compile | 此作用域表示项目classpath中的依赖可以使用,为默认作用域。 (编译,测试,运行) |
provided | 此作用域表示依赖将由JDK或者运行时的Web服务器或容器提供。 编译,测试 |
runtime | 此作用域表示依赖在编译时不需要,但在执行时需要。 运行 |
test | 此作用域表示依赖只在测试编译和执行阶段可用。 测试 |
system | 此作用域表示你必须提供系统路径。 编译,测试 |
system 要提供systempath 可使用java环境变量 由于system范围不是通过maven仓库解析,而是查找本机系统的路径,所以会造成构件的不可移植,因此需要谨慎使用。如
<dependency>
<artifactId>ciService</artifactId>
<groupId>com.unicom</groupId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/ci_api-1.0-SNAPSHOT.jar</systemPath>
</dependency>
import | 此作用域只在依赖是POM类型时使用。此作用域表示特定的POM需要替换成被引入的POM的部分中的依赖。 |
左边表示第一依赖范围 上面表示第二依赖范围 依赖范围影响传递性依赖
在dependecy下可添加 排除传递依赖。
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
mvn dependency:analyze 使用
未使用的依赖
mvn dependency:tree 使用
依赖冲突
maven release 与deploy 的区别
release 可以发布scm端的代码 并且帮助版本控制帮你自动更改版本,发布的是正式版