Почему Maven использует pom.xml предоставленного модуля сборки? - PullRequest
0 голосов
/ 23 марта 2019

У нас есть простой Maven Pom, как

<project xmlns="http://maven.apache.org/POM/4.0.0">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.xy.project.z</groupId>
  <artifactId>client</artifactId>
  <packaging>pom</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.xy.maven</groupId>
        <artifactId>own-maven-plugin</artifactId>
        <version>1.19.0</version>
        <executions>...</executions>
      </plugin>
    </plugins>
  </build>
</project>

Как вы можете догадаться, own-maven-plugin - это наш собственный плагин maven, созданный в другом проекте и с независимой версией. Пока проблем нет. Но из ниоткуда (по крайней мере для меня) предоставленный пом больше не бегал. И это прекратилось с сообщением:

Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find org.xy.projcect:a:bundle:1.0.7-SNAPSHOT in http://repo.local:8081/repository/maven-public/ was cached in the local repository, resolution will not be reattempted until the update interval of internal-repository has elapsed or updates are forced

Что случилось. Мы создали новую версию own-maven-plugin, этот плагин всегда был fat-jar, содержащим все необходимые зависимости. Теперь все, что мы сделали, мы добавили еще одну зависимость.

Итак, есть две вещи, которые я не понимаю.

  1. Почему maven пытается разрешить все зависимости уже созданного фляги, которая используется в build-plugins.

  2. И почему проблема устранена после того, как я удалил .m2/org/xy/maven/own-maven-plugin/own-maven-plugin-1.19.0.pom

Это воспроизводимо, добавление удаленного pom завершается неудачно. Я не нашел никаких указаний на мою проблему в плагине maven описание сайта .

Так что, если у кого-то есть объяснение. Пожалуйста, дайте мне знать.

UPDATE-1: Обновлено сообщение об ошибке

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Ok нашел причину проблемы.

Новая зависимость содержала зависимость с зависимостью типа bundle.

<dependency>
    <groupId>org.xy.maven</groupId>
    <artifactId>own-maven-plugin-dep</artifactId>
    <version>1.2.0</version>
    <type>bundle</bundle>
</dependency>

После удаления этого типа она снова работала как charme, снова,Я не знаю, почему <type>bundle</type> был добавлен в первую очередь.Но я не вижу никаких недостатков при его удалении.

Чтение этого о типе комплекта не очень помогает понять, почему удаление решило мою проблему здесь.

Этоответ не содержит все ответы на вопрос.И если кто-то дает лучший вариант, я более чем рад изменить принятый ответ.

0 голосов
/ 24 марта 2019

Плагины Maven обычно не создаются в виде жирных банок. Они сами решают свои зависимости.

Если у вас есть толстый фляга, которая содержит зависимости в своем pom, то, вероятно, зависимости также разрешены, поэтому у вас есть классы дважды: один раз в толстом банке и один раз в зависимостях.

Я не могу сказать, объясняет ли это все ваши ошибки, но, полагаю, все будет проще, если вы вообще избежите жирной банки.

...