我有一个包含多个子模块的maven项目。
我有一个根pom文件,其中我有jackson依赖
<dependency>
<groupId>fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
我在一个名为&#39; api&#39; 的模块中拥有 jackson依赖。
<dependency>
<groupId>fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
</dependency>
我有一个名为&#39; client&#39; 的新模块,我在其中导入了&#39; api&#39;
<dependency>
<groupId>abc.com</group>
<artifactId>api</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
我正在使用以下命令进行编译。
mvn -Djackson.version=2.4.4 compile
如果我尝试将jackson库导入客户端模块,我会收到编译错误,除非我再次明确地将 jackson 依赖项添加到客户端模块
为什么添加 api 依赖项还不够,因为它已包含jackson依赖项
答案 0 :(得分:2)
您将ANativeWindow*
中的jackson
依赖关系定义为api
,因此它不具有传递性:
<强>提供强>
这很像compile,但表示您希望JDK或容器在运行时提供依赖性。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅适用于编译和测试类路径 且不可传递 。