2012-01-05 2 views
0

У меня есть несколько зависимостей, подобных этому. Например: JDICНазвание нетрадиционной зависимости в maven

В моей pom.xml, я определил зависимость

<dependency> 
<artifactId>jdic</artifactId> 
<groupId>jdic</groupId> 
<version>0.8.6</version> 
</dependency> 

И у меня есть удаленный репозиторий (внутренний сервер): например http://repo/thirdparty/ И JDIC можно найти в http://repo/thirdparty/jdic/jar/jdic.jar

Как вы заметили, именование не является обычным groupId: artifactId: version, вместо этого его просто jdic.jar

поэтому, когда я запускаю maven compile

mvn clean compile 

maven сообщает мне, что он не может разрешать зависимости. Я знаю, что мы можем просто загрузить эти банки в локальном хранилище .m2/хранилище и запустить

mvn compile (ie without clean) 

и банка не будет проблемой. Но есть ли другой способ, который я могу сделать, чтобы он извлекал данные из удаленного, несмотря на его нетрадиционное имя и отсутствие метаданных/данных pom для этих зависимостей?

У меня уже есть зеркало для этого внутреннего хранилища, перегружает центральную

ответ

0

Вы можете установить JDIC во внутреннем/хранилище зеркала с версией (jdic-0.8.6.jar).

Если вы используете диспетчер хранилища и вы загрузили в него банку, он автоматически создаст для него жучок, а также обеспечит, что зависимость была создана с версией, согласно конвенции maven.

+0

Я создал еще один локальный репозиторий под названием .maven3. В моем файле settings.xml моего проекта я переопределил $ {user.home} /. Maven3/repository (может ли он взять свойство $ {user.home}?) Затем я установил банку jdic в ~/.maven3/хранилище/JDIC/JDIC/0.8.6/JDIC-0.8.6.jar , для которых JDIC-0.8.6.jar является символической ссылкой на jdic.jar тогда я побежал МВН установить он по-прежнему не удалось загрузить зависимость – ALQH

+0

Я только что узнал, что если я ставлю $ {user.home} /. maven3/repository, локальный репозиторий теперь является myProjectnameWhereIRunMaven/~/.maven3/repository нечетным ... – ALQH

0

Удаленный репозиторий Maven - это не любой веб-сервер, который ставит файлы так, как вы хотите. Есть много конвенций для подражания. Одним из них является способ представления версии (которая является одним из основных элементов артефакта). С вашим «удаленным репозиторием» ясно, что Maven не может найти артефакт.

Установите настоящий репозиторий Maven для размещения таких файлов. Вы можете посмотреть в Nexus и Artifactory.

+0

Какова структура файла для хранилища maven? Я попытался установить банку вручную в локальный репозиторий и запустить mvn install, и зависимость все еще не удалась. – ALQH

+1

вам не нужно заботиться о структуре файла. Google для «maven install third party lib» и узнайте, как правильно установить артефакт для использования Maven2/3. И я говорю о удаленном репозитории, а не о локальном репо. (И вы сказали в своем посте, что все в порядке, если вы устанавливаете JAR в локальном репо, но теперь вы сказали, что он не работает? Можете ли вы решить проблему?) –

+0

Если я устанавливаю банку в местное репо, это прекрасно, потому что Maven сначала проверяет местное репо. Но я хочу загрузить его с удаленного репо, которое является репозиторией Maven 1. Его не найти банки в удаленном репо, скорее всего, из-за его регенерации Maven 1. .. Извините за путаницу – ALQH

Смежные вопросы