Как остановить Maven 2.x от попыток получения несуществующих файлов pom.xml для зависимостей при каждой сборке? - PullRequest
10 голосов
/ 26 января 2010

В моем проекте есть ряд зависимостей, которые транзитивно включены из других зависимостей, у которых нет файлов pom.xml, доступных в любом из наших корпоративных репозиториев. Это внутренние библиотеки только для jar, поддерживаемые различными командами, которые для удобства были загружены в репозитории не-Maven командами, однако эти репозитории, к сожалению, не мои для игры.

Для этих зависимостей Maven настаивает на том, чтобы пытаться получать помпы из каждого из моего списка репозиториев каждый раз, когда я запускаю сборку, или mvn dependency:list. Это означает, что maven пытается получить 8-кратные pom-файлы из 7 разных хранилищ, и это происходит по глобальной корпоративной глобальной сети; это действительно медленно.

например. для одной конкретной зависимости

C:\Working\dev\workspace\project>mvn dependency:list
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building project
[INFO]    task-segment: [dependency:list]
[INFO] ------------------------------------------------------------------------
[WARNING] Unable to get resource 'aGroupId:anArtifactId:pom:4.0.14i' from repository inhouse (http://someRepo1/proximity/repository/inhouse): While configuring wagon for 'inhouse': Unable to apply wagon configuration.
Downloading: http://someRepo1/proximity/repository/extFree/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository extFree (http://someRepo1/proximity/repository/extFree)
Downloading: http://someRepo1/proximity/repository/externalNonFree/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository extNonFree (http://someRepo1/proximity/repository/externalNonFree)
Downloading: http://someRepo2/efs/dist/maven/maven2-repository/incr/common/lib/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository efsRepo (http://someRepo2/efs/dist/maven/maven2-repository/incr/common/lib)
Downloading: http://someRepo2/efs/dist/btijava/maven2-repository/incr/common/lib/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository efsBTI (http://someRepo2/efs/dist/btijava/maven2-repository/incr/common/lib)
Downloading: http://someRepo3/maven/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository internal.repo (http://someRepo3/maven)
Downloading: http://repo1.maven.org/maven2/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository central (http://repo1.maven.org/maven2)`
...
etc
...
[INFO] [dependency:list {execution: default-cli}]
[INFO]
[INFO] The following files have been resolved:
... etc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20 seconds
[INFO] Finished at: Tue Jan 26 15:01:48 CST 2010
[INFO] Final Memory: 31M/74M
[INFO] ------------------------------------------------------------------------

С другой стороны, для POM, которые просто недействительны (например, старая модель версии или поврежденный / недействительный XML), он просто проверяет мое локальное репо, жалуется, что он недействителен, а затем продолжает. Что хорошо; по крайней мере, это не пробует снова через WAN.

Есть ли способ (настройка, переопределение, изменение конфигурации репозитория), который я могу предотвратить повторным попыткам подключаемого модуля / преобразователя зависимостей Maven найти недостающие POM, если в локальном репозитории уже есть файл jar?

Технические характеристики: Maven 2.2.1 (определения плагинов superPOM по умолчанию) JDK 1.6.0_18

Ответы [ 4 ]

9 голосов
/ 27 января 2010

Ответ Паскаля верен для двух локальных обходных путей сборки. Тем не менее, ваш лучший вариант - попросить владельцев этих проектов создать POM для артефактов. Они не должны быть сложными, будет работать простая альтернатива, которую Maven использует внутри:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>aGroupId</groupId>
  <artifactId>aArtifactId</artifactId>
  <version>4.0.14i</version>
</project>
4 голосов
/ 26 января 2010

Загрузка POM на самом деле является центральной концепцией в Maven для поддержки транзитивных зависимостей (на самом деле, зависимость - это не просто JAR, см. 3.5.5. Управление зависимостями Maven , чтобы узнать подробности об этом), Я не знаю, сможете ли вы предотвратить это.

Конечно, правильнее всего было бы устранить причину проблемы. Но если вы не можете, возможно, вы можете запустить сборку в автономном режиме (используя опцию -o). Или, может быть, вы можете просто «установить» артефакты в вашем локальном репозитории, используя install:install-file и дать плагину команду генерировать pom для них, используя необязательный параметр generatePom (но очевидно, не очень хорошо "масштабируется").

2 голосов
/ 14 июля 2010

Установите репозиторий Nexus (или аналогичный) и загрузите туда артефакты. Nexus автоматически создаст базовые помпы для загружаемых вами артефактов.

0 голосов
/ 13 ноября 2010
  • загрузка в локальный репозиторий
  • установить нексус и загрузить
  • работа в автономном режиме

возможно, лучшая идея - полностью избавиться от мавена, это ужас!

...