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

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

Для этих зависимостей Maven настаивает на том, чтобы пытаться получать poms из каждого моего списка репозиториев каждый раз, когда я запускаю сборку, или 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 ответа

Решение

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

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>aGroupId</groupId>
  <artifactId>aArtifactId</artifactId>
  <version>4.0.14i</version>
</project>

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

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

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

  • скачать в локальный репо
  • установить нексус и загрузить
  • работать оффлайн

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

Другие вопросы по тегам