Неразрешимый родительский POM: при создании сайта проекта Maven 3
В настоящее время у меня возникает проблема с Maven 3, когда я пытаюсь создать сайт. Буду признателен Вам за помощь в этом.
mvn чистый сайт
..........
[INFO] Reactor Summary:
[INFO]
[INFO] Project A ......................................... SUCCESS [15.383s]
[INFO] Project B ......................................... SUCCESS [2.232s]
[INFO] My Site ........................................... FAILURE [0.105s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.769s
[INFO] Finished at: Fri Jun 29 14:26:04 AMT 2012
[INFO] Final Memory: 18M/150M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) on project site: SiteToolException: Unable to read local module-POM: 1 problem was encountered while building the effective model for my.com:projA:0.1-SNAPSHOT
[ERROR] [FATAL] Non-resolvable parent POM: Could not find artifact my.com:parent-pom:pom:0.1-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 12, column 13
[ERROR] for project my.com:projA:0.1-SNAPSHOT
.............
Сначала это конфигурация:
Apache Maven 3.0.4 (r1232337; 2012-01-17 12:44:56+0400)
Java version: 1.7.0_04, vendor: Oracle Corporation
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.4", arch: "x86_64", family: "mac"
Nexus repository: 2.0.6
Родительский POM:
<modelVersion>4.0.0</modelVersion>
<name>Parent POM</name>
<groupId>my.com</groupId>
<artifactId>parent-pom</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.1</version>
<configuration>
<reportPlugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Проект агрегации pom:
<modelVersion>4.0.0</modelVersion>
<name>My Site</name>
<groupId>my.com</groupId>
<artifactId>site</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>my.com</groupId>
<artifactId>parent-pom</artifactId>
<version>0.1-SNAPSHOT</version>
<relativePath/>
</parent>
<modules>
<module>projA</module>
<module>projB</module>
</modules>
Помощник проекта A:
<modelVersion>4.0.0</modelVersion>
<name>Project A</name>
<groupId>my.com</groupId>
<artifactId>projA</artifactId>
<version>0.1-SNAPSHOT</version>
<parent>
<groupId>my.com</groupId>
<artifactId>parent-pom</artifactId>
<version>0.1-SNAPSHOT</version>
<relativePath/>
</parent>
Помощник проекта B:
4.0.0
<name>Project B</name>
<groupId>my.com</groupId>
<artifactId>projB</artifactId>
<version>0.1-SNAPSHOT</version>
<parent>
<groupId>my.com</groupId>
<artifactId>parent-pom</artifactId>
<version>0.1-SNAPSHOT</version>
<relativePath/>
</parent>
Вот структура папки, в которой я запускаю "mvn clean site":
./pom.xml (aggregation project)
./projA/pom.xml (Project A)
./projB/pom.xml (Project B)
parent-pom успешно развертывается в репозитории NEXUS до выполнения mvn clean site
со следующей командой mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots
И, наконец, сама проблема:
Когда я запускаю mvn clean site
сразу после успешного развертывания сайта parent-pom. Если я удалю папку (с ее содержимым) "my" (она содержит родительскую помню) из локального репозитория (~/.m2/repository), а затем попытайтесь создать сайт с помощью mvn clean site
, я получаю описанную ошибку в начале. Фактически, Maven загружает родительский помп из NEXUS. Я сравнил загруженные файлы и файлы, которые были сгенерированы после развертывания, и понял, что их мало, например maven-metadata-local.xml рядом с папкой "0.1-SNAPSHOT".
Поэтому, когда я пытаюсь запустить работу по созданию сайта у Jenkins, я получаю описанную выше ошибку, потому что родительский pom не развертывается с машины, на которой работает Jenkins.
Как я могу решить эту проблему или что я сделал не так?
Спасибо.
Ответы
Ответ 1
Как указано этот ответ, есть ошибка в плагине сайта, который ищет только зависимости в том, что, по его мнению, является центральным Maven.
У меня такая же проблема в Maven 3.0.4 и плагине сайта 3.3. У меня также есть проблема, что он работает на моей машине разработки под управлением Windows 7, но не на CI-сервере, на котором работает Jenkins на Debian.
Ответ 2
Ваша проблема не в ваших позах. Когда я построил ваш агрегационный pom, Maven загрузил обычно родительский pom из удаленного репо (после того, как я удалил из своего локального репо).
Попробуйте следующее:
mvn -U clean install site dependency:purge-local-repository
Кроме того, вы можете немного почистить своих попов:
- удалите
<relativePath/>
из всех них
- удалите
<version>0.1-SNAPSHOT</version>
и <groupId>my.com</groupId>
из projA и ProjB (они наследуются от родителя)
Ответ 3
У меня такая же проблема... работает на моем MacBook разработчика, но не работает на моем Jenkins, работающем на RHEL7 при запуске mvn site
с помощью maven-site-plugin:3.7
. Я не тестировал обновление плагина сайта.
Я нашел другое решение. Проблема в моем случае была maven-project-info-reports-plugin
особенно цель dependencies
. Если я пропущу цель с помощью -Dmpir.skip=true
, мой сайт будет создан (без зависимостей:( отчет).