我正在和maven一起工作,虽然他们属于不同的实际项目,但我正在同一家长pom下开发3个班级。 这三个类属于不同的pom文件和工件名称,它们(在它们的链式依赖项之外)完全独立 为简单起见,我将其称为A,B和C.
A取决于B.
B取决于C.
在某种程度上,A会创建一个新的B实例。
...
B b = new B();
...
B延伸C
...
public class B extends C {
...
这里是pom依赖项:
答:
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>B</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>B</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</dependencyManagement>
B:
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>C</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>C</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</dependencyManagement>
当我在父pom文件上执行maven install
时,它正确定义了模块顺序
[INFO] Reactor Build Order:
[INFO]
[INFO] C
[INFO] B
[INFO] A
首先,它正确编译C和B.然后,什么时候编译A:
/path/to/A/A.java[27,28] error: cannot access C
如果您对“27,28”是什么感到好奇,那就是上面引用的“新”这一行。
有趣的是:
mvn install
,然后在A上执行mvn install
(我知道原因;)),它可以工作,但由于所请求工作的要求,这不是解决方案。< / LI>
我忘了提及:
出于某种原因,在依赖树中:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ A ---
[INFO] my.group:A:jar:0.0.1
[INFO] +- my.group:B:jar:0.0.1:provided
C未在需求树中显示为要求。虽然:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ B ---
[INFO] my.group:B:jar:0.0.1
[INFO] \- my.group:C:jar:0.0.1:provided
C是B要求树中的要求。
主要的奇怪的事情是:为什么A的需求树中没有C?
答案 0 :(得分:1)