【发布时间】:2021-11-26 09:25:21
【问题描述】:
我有一个依赖项目,我在其中定义了以下类
package it.dependency.common;
public class Consumer {
public void consume() {
Worker dependency = new Worker();
dependency.work();
}
}
和
package it.dependency.common;
public class Worker {
public void work() {
System.out.println("I'm doing things in the DEPENDENCY project");
}
}
如果我运行一个简单的 main 函数,调用 Consumer 对象的 mathod consume(),它会正确打印我在 DEPENDENCY 项目中做事。
我将这个 maven 项目编译到一个 jar 中,并将它作为另一个项目的依赖项导入到另一个项目中,称为 test project
<dependency>
<groupId>org.example</groupId>
<artifactId>dependency</artifactId>
<version>1.0-SNAPSHOT</version>
<systemPath>${lib.path}/dependency-1.0-SNAPSHOT.jar</systemPath>
</dependency>
我可以重新定义其他类,例如
package it.dependency.common;
public class Worker {
public void work() {
System.out.println("I'm doing things in the TEST project");
}
}
现在,如果我在调用 DEPENDENCY 项目的 Consumer 类的地方运行一个简单的 main,它会打印出 我正在 TEST 项目中做事。
所以消费者实际上使用了它不知道的项目的 Worker 类。像一个覆盖包类? 这种行为是如何工作的以及它是如何被调用的?
【问题讨论】:
标签: java spring maven dependencies dependency-management