【问题标题】:Import class from transitive dependency从传递依赖导入类
【发布时间】:2017-04-13 16:13:00
【问题描述】:

我有以下依赖: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 上的包。

【问题讨论】:

  • 这应该没有问题。如果不是,那么可能是您的 Maven 设置不正确,或者您的 Maven 存储库中没有最新版本的 A 或 B,或者必须刷新 Eclipse,等等。
  • 您的 A、B 和 X 类存储库是哪个?而且我认为您还必须在每个 中指定 1.0.0
  • @SergioMontoro 是的对不起我的错误,添加了版本标签
  • 已解决,当 B 被声明为对 X 的依赖时,maven 导入 B 作为对项目的引用。引用已损坏,因此找不到项目,这就是为什么类没有在 Eclipse 上加载的原因。将 false 添加到 maven-eclipse-plugin 解决了这个问题。

标签: java maven dependencies pom.xml


【解决方案1】:

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

第三:如果你使用来自 B 的类,你也应该将 B 列为依赖项。间接依赖 B 是危险的(A 将来可能会更改其依赖项)并且还会隐藏您的“真实”依赖项。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2017-05-02
    • 1970-01-01
    • 2018-07-06
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多