从传递依赖导入类

时间:2016-11-29 15:33:13

标签: java maven dependencies pom.xml

我有以下依赖项:A,B和X." - >"意思取决于。

A -> B
X -> A

B有以下公共类:

public class PublicClassB {
     public static void do() {
     }
}

PublicClassB 由X和A. E使用。

A类的pom如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.company.name</groupId>
    <artifactId>A</artifactId>
    <version>1.0.0</version>
    <dependencies>
          <dependency>
              <groupId>my.company.name</groupId>
              <artifactId>B</artifactId>
              <version>1.0.0</version>
          </dependency>
    </dependencies>
</project>

X的pom如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.company.name</groupId>
    <artifactId>X</artifactId>
    <version>1.0.0</version>
    <dependencies>
          <dependency>
              <groupId>my.company.name</groupId>
              <artifactId>A</artifactId>
              <version>1.0.0</version>
          </dependency>
    </dependencies>
</project>

有没有办法从X?访问 PublicClassB#do()。我无法进行导入工作,Eclipse没有检测到B上的包。

1 个答案:

答案 0 :(得分:3)

首先,如评论中所述,您需要一个版本标记或从某些依赖关系管理中获取版本。其次,m2e(Eclipse插件)并不总是正确地确定依赖关系。尝试使用Maven构建(运行为 - &gt; Maven构建),看看是否有任何错误。

第三:如果您使用B中的类,您还应该将B列为依赖项。依赖B间接绘制是危险的(A可能会改变其未来的依赖关系)并隐藏你的真实&#34;的依赖关系。