【问题标题】:Maven missing transitive dependencyMaven缺少传递依赖
【发布时间】:2011-04-10 09:41:31
【问题描述】:

我有一个依赖项(datanucleus-db4o)的 maven 项目。这种依赖本身就依赖于 db4o (db4o:db4o:jar:7.12.126.14142-all-java5)。

现在 maven 说:

09.09.10 19:43:09 MESZ: Missing artifact db4o:db4o:jar:7.12.126.14142-all-java5:compile

我是新手。 datanucleus-db4o 用特定的版本号定义自己的依赖关系对吗?这是一个好方法吗? m2eclipse 无法下载。我下载了更新版本的 db4o 并将其添加到类路径中。 Maven 不断写下丢失的工件。

当我启动我的应用程序时,我也遇到了 NoClassDefFound 错误。这引出了另一个问题:

我做错了吗?

提前致谢。

这里是 pom.xml 的相关部分...

<dependency>
  <groupId>org.datanucleus</groupId>
  <artifactId>datanucleus-core</artifactId>
  <version>2.2.0-m1</version>
  <type>jar</type>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.datanucleus</groupId>
  <artifactId>datanucleus-db4o</artifactId>
  <version>2.1.1</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>

这里是pom.xml的相关部分

<dependency>
  <groupId>db4o</groupId>
  <artifactId>db4o</artifactId>
  <version>7.12.126.14142-all-java5</version>
</dependency>

【问题讨论】:

    标签: eclipse maven-2 dependencies m2eclipse dependency-management


    【解决方案1】:

    datanucleus-db4o 用特定的版本号定义自己的依赖关系对吗?这是个好方法吗?

    我不确定我是否理解了这个问题...无论如何,datanucleus-db4o 工件的 db4o:db4o 依赖项确实存在问题:它在 Maven 中心和 DataNucleus repository 中均不可用。我不明白用户应该如何使用 datanucleus-db4o 工件。

    我下载了一个较新版本的 db4o 并将其添加到类路径中。 Maven 不断写下丢失的工件。

    不确定您到底做了什么,但也许以下方法会起作用:排除无法解析的依赖项并将其替换为 db4o 存储库中的等效项。

    <dependencies>
      ...
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-db4o</artifactId>
        <version>2.1.1</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
          <exclusion>
            <groupId>db4o</groupId>
            <artifactId>db4o</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.db4o</groupId>
        <artifactId>db4o-full-java5</artifactId>
        <version>7.12-SNAPSHOT</version>
      </dependency>
    </dependencies>
    <repositories>
      ...
      <repository>
        <id>db4o</id>
        <url>https://source.db4o.com/maven</url>
      </repository>
    </repositories>
    

    当然,我不知道这是否可行。

    我在启动应用程序时也遇到了 NoClassDefFound 错误。这引出了另一个问题:

    不能说,因为你没有发布错误。但是试试上面的。

    【讨论】:

      【解决方案2】:

      所需的文件不在 maven 存储库中,但它在 datanucleus zip 文件中(具有所有依赖项的文件)。查看 /deps 文件夹。

      我解压它并使用这个命令将它安装到本地 maven 存储库中:

      ./mvn install:install-file -Dfile=/home/myUser/Downloads/db4o-7.12.126.14142-all-java5.jar -DgroupId=db4o -DartifactId=db4o -Dversion=7.12.126.14142-all-java5 -Dpackaging=jar
      

      之后被maven找到。现在还有其他问题正在发生。我会尝试自己解决它们...

      目前似乎 JDO 或 Datanucleus 的东西组织得不好。我认为他们重构了一些类,现在在某些版本中找不到它们,并且实现与 api 等不兼容。

      【讨论】:

      • 如果您不介意您的构建不可移植,这是一个解决方案。我个人更喜欢依赖公共存储库中的工件。
      • 是的,你是对的。由于所有问题,我现在手动管理依赖项解析。我希望这只是暂时的情况,下一个版本的 JDO 和 Datanucleus 很快就会发布(只是一个愿望)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 2018-07-06
      • 2014-06-10
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多