在实际开发过程遇到以下问题:
当A依赖B,B依赖C,如果A对B、B对C的依赖pom scope设置为compile,则A对C的依赖与B对C的依赖相同。
这样会产生一个问题:当B依赖的C(C可能是B端的本地包,不在公共仓库上)在A端没有,则使用maven build的时候会报错。
依赖传递:
由scope定义
-
compile - this is the default scope, used if none is specified. Compile dependencies are available in all classpaths. Furthermore, those dependencies are propagated to dependent projects.
-
provided - this is much like compile, but indicates you expect the JDK or a container to provide it at runtime. It is only available on the compilation and test classpath, and is not transitive.
-
runtime - this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath.
-
test - this scope indicates t