Обходной путь для maven «Не удалось разрешить артефакт» в нетривиальных зависимостях - PullRequest
0 голосов
/ 22 мая 2011

При сборке старого проекта иногда я сталкиваюсь с ужасной ошибкой Failed to resolve artifact.

Затем я ищу jar и pom этого конкретного артефакта и использую mvn install:install-file цель вручную установить его локально .

Это решает тривиальный случай, но иногда зависимость проекта от артефакта не тривиальна и включает в себя поля pom проекта, такие как:

      <scope>runtime</scope>

или хуже:

      <exclusion>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
      </exclusion>

Как бы вы справились с этими случаями?Есть ли способ добавить эти поля в команду?

1 Ответ

1 голос
/ 22 мая 2011

Зависимость времени выполнения - это зависимость, которую Maven добавит к тестовому пути к классам и включит в сборку или войну, но не включит в путь к классам компиляции. Если вам нужно запустить тесты или пакет, вам просто нужно сделать точно такую ​​же установку: установить-файл (или, что еще лучше, запустить менеджер репо и развернуть его). Время выполнения - область действия .

Если, с другой стороны, вы столкнулись с:

<dependency>
   <groupId>abelian</groupId>
   <artifactId>grape</groupId>
   <type>transitive</type>
</dependency>

Тогда вам нужно будет использовать -Dpackaging = transitive для install: install-file и аналогично для «классификатора» (-Dclassifier).

Если вам нужно добавить что-то в ваше дерево зависимостей, в котором есть исключение в pom, вам нужно будет найти или создать POM с этим исключением и передать его цели install-file, которая имеет -D для ПОМ. Вы ничего не можете сказать install: install-file, чтобы сказать ему, чтобы он добавлял исключения при создании POM с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...