maven - Как решить эту ошибку: POM для XXX недействителен?

Я создаю простой проект с maven. Я не могу заставить его построить, потому что отсутствуют транзитивные зависимости, а именно objenesis 1.0.

Я запускаю maven в режиме отладки и получаю это сообщение:

[DEBUG] =======================================================================
[WARNING] The POM for org.jmock:jmock-junit4:jar:2.6.0 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for org.jmock:jmock-junit4:2.6.0
[ERROR] Invalid packaging for parent POM org.jmock:jmock-parent:2.6.0, must be "pom" but is "jar" @ org.jmock:jmock-parent:2.6.0
...

Когда я смотрю на jmock-parent, я не могу найти ссылку ни на тип pom, ни на jar.

Как я могу решить эту проблему?

Примечание. Мы используем нексус нашей компании для получения зависимостей.


pom.xml

<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>Poc</groupId>
<artifactId>Poc</artifactId>
<version>0.0.1-SNAPSHOT</version>

<properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>

<dependencies>
      <dependency>
         <groupId>org.jmock</groupId>
         <artifactId>jmock-junit4</artifactId>
         <version>2.6.0</version>
      </dependency>
</dependencies>
  </project>

jmock-parent-2.6.0.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jmock</groupId>
   <artifactId>jmock-parent</artifactId>
   <version>2.6.0</version>
   <description>POM was created by Sonatype Nexus</description>
</project>

person Stephan    schedule 22.11.2013    source источник


Ответы (1)


Похоже, зависимость не скачалась должным образом. Я бы попробовал удалить каталог org.jmock из вашего локального репозитория M2 и позволить Maven попробовать новую загрузку этого jar-файла.

Правка. Когда вы смотрите на M2_REPO\org\jmock\jmock-parent\2.6.0\jmock-parent-2.6.0.pom в текстовом редакторе, там написано конкретно <packaging>pom</packaging>? Вы также можете убедиться, что ваши зависимости в репозитории Nexus верны. Я только что вытащил зависимость из Maven Central, и у меня не было с этим проблем.

jmock-parent pom отрывок

Редактировать 2. Возможно, Nexus автоматически создаст для вас родительский pom, если не сможет загрузить его из Maven Central. Ваша установка Nexus настроена на загрузку зависимостей из Maven Central? Вы вручную mvn deploy:deploy-file перенесли файл jmock-junit4.jar в репозиторий Nexus? Я уверен, что есть способ заставить Nexus обновить этот pom, или вы можете вручную развернуть правильный родительский pom, загрузив его из центра maven, а затем выполнив команду mvn deploy, указанную выше.

person jmcmahon    schedule 22.11.2013
comment
Я сделал это, но все еще присутствует. - person Stephan; 23.11.2013
comment
Интересная проблема... Обновил мой ответ - person jmcmahon; 25.11.2013
comment
Посмотрите на мое обновление в моем вопросе. Кажется, у нашего нексуса возникли проблемы с загрузкой файла pom. - person Stephan; 25.11.2013
comment
Обновил мой ответ ... похоже, проблема с конфигурацией нексуса? - person jmcmahon; 25.11.2013
comment
Я изменил репозиторий, из которого была загружена зависимость, и... теперь все работает гладко! Я сообщу об этой проблеме администратору Nexus. Спасибо @jmcmahon - person Stephan; 25.11.2013