Maven缺少传递依赖

时间:2010-09-09 17:58:51

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

我有一个带依赖关系的maven项目(datanucleus-db4o)。此依赖项本身依赖于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

我是maven的新手。 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>

2 个答案:

答案 0 :(得分:3)

  

datanucleus-db4o是否正确定义了自己与特定版本号的依赖关系?这是一个好方法吗?

我不确定我是否明白这个问题......无论如何,datanucleus-db4o工件的db4o:db4o依赖确实存在问题:它在Maven中心和{{3 }}。我不明白用户应该如何使用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错误。这引出了另一个问题:

不能说因为你没有发布错误。但请尝试以上内容。

答案 1 :(得分:0)

所需文件不在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和这些东西不兼容。