从其他模块导入时无法找到maven依赖项

时间:2016-06-06 07:13:09

标签: java maven

我有一个包含多个子模块的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依赖项

1 个答案:

答案 0 :(得分:2)

您将ANativeWindow*中的jackson依赖关系定义为api,因此它不具有传递性:

  

<强>提供
  这很像compile,但表示您希望JDK或容器在运行时提供依赖性。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅适用于编译和测试类路径 且不可传递

- https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope(强调补充)