Maven отсутствует транзитивная зависимость - PullRequest
2 голосов
/ 09 сентября 2010

У меня есть проект 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 и добавил ее в classpath.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 ]

3 голосов
/ 09 сентября 2010

Правильно ли, что datanucleus-db4o определяет свою собственную зависимость с конкретным номером версии? Это хороший способ?

Я не уверен, что понял вопрос ... Во всяком случае, действительно, что-то не так с зависимостью db4o:db4o артефакта datanucleus-db4o: он недоступен ни в центральном Maven, ни в хранилище DataNucleus . Я не понимаю, как пользователи должны использовать артефакт datanucleus-db4o.

Я скачал более новую версию db4o и добавил ее в classpath. 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 при запуске приложения. Это приводит меня к другому вопросу:

Не могу сказать, так как вы не опубликовали ошибку. Но попробуйте описанное выше.

0 голосов
/ 10 сентября 2010

Требуемый файл не находится в репозиториях Maven, но он находится в zip-файле datanucleus (тот, который имеет все зависимости).Посмотрите в папку / 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 и такими вещами.

...