Как я упоминал в комментарии ниже, я хочу удалить их из pom, потому что, хотя они находятся в моем локальном репозитории Maven, в то время как maven создает проект, он всегда говорит, что пытается загрузить каждую из этих локальных зависимостей, добавив дополнительное время на каждый цикл сборки.
Вы не показываете никаких следов, иллюстрирующих точную проблему (это обычно помогает), но если ваши локальные зависимости не являются зависимостями SNAPSHOT (и это было бы плохим выбором для установленных вручную артефактов), я не думаю, что ваше описание поведение точное.
Я надеялся скопировать эти jar-файлы в место, где они будут обнаружены в процессе сборки, но Maven не пытался загружать какие-либо ресурсы каждый раз.
Я предполагаю, что в зависимостях просто отсутствует файл .pom
, который Maven пытается загрузить. Вы можете указать Maven сгенерировать этот pom для вас при установке JAR в вашем локальном репозитории, используя:
mvn install:install-file -Dfile=your-artifact-1.0.jar \
[-DgroupId=org.some.group] \
[-DartifactId=your-artifact] \
[-Dversion=1.0] \
[-Dpackaging=jar] \
<b>[-DgeneratePom=true]</b>
Независимо от того, как ужасно это может показаться, я нахожу поведение Мейвена здесь более ужасным.
Использование system
зависимостей контекста не кажется ужасным, это ужасно и не рекомендуется практиковать , и его следует избегать в 99,999% случаев , Цитируем предоставленную ссылку:
system: Эта зависимость требуется на некотором этапе жизненного цикла вашего проекта, но зависит от системы. Использование этой области не рекомендуется: эта функция считается «продвинутой» и должна использоваться только в том случае, если вы действительно понимаете все последствия ее использования, что может быть чрезвычайно трудно, если вообще не поддается количественной оценке. Эта область по определению делает вашу сборку непереносимой. Это может быть необходимо в определенных крайних случаях. В системную область входит элемент <systemPath>
, который указывает на физическое расположение этой зависимости на локальном компьютере. Таким образом, он используется для ссылки на некоторый артефакт, который, как ожидается, будет присутствовать на данном локальном компьютере, а не в репозитории; и чей путь может варьироваться от машины к машине. Элемент systemPath
может ссылаться на переменные среды в своем пути: например, ${JAVA_HOME}
.
Просто используйте Maven правильно, и у вас не будет проблем. С system
зависимостями в определенной области (с какой стати люди продолжают предлагать злоупотреблять ими ?!), я предсказываю больше проблем позже.
Как вы правильно догадались, htmlunit, который находится в моем локальном репозитории maven, не имеет файлов pom. Я тоже не помню, как я его установил.
Так что я не сумасшедший :) Очевидно, я предлагаю исправить проблему и предоставить недостающие файлы .pom
. Если вы не хотите переустанавливать артефакты (чтобы Maven мог их сгенерировать), вы можете создать .pom
вручную. Достаточно простого файла, подобного этому:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>ze.groupId</groupId>
<artifactId>some-artifact-id</artifactId>
<version>X.Y.Z</version>
</project>
Но, пожалуйста, не переключайтесь на system
зависимости объема, это принесет больше вреда, чем пользы в долгосрочной перспективе.
Возможно, вы спрашиваете, почему я использую версию 2.8 - в ней содержатся некоторые исправления, необходимые для моего проекта.
У вас, конечно, есть веские причины, и я даже не буду их обсуждать.
(...) Я получаю сообщение об ошибке "Слишком длинная командная строка":
Это прискорбно, и вы должны сообщить об этой проблеме в datanucleus.