2013-11-01 2 views
0

Я объявил зависимость в одном из моих модулей pom-файлов модуля EJB для другого модуля, расположенного внутри проекта.Maven ищет артефакт в неправильном месте

Проект структурирован:

-- eS 
|-- pom.xml 
|-- eL 
| |-- pom.xml 
| |-- eLBO 
| |-- eLDAO 
| |-- eLBLImpl 
| |-- eLEJB 
| | |-- pom.xml 
| | `-- src 
| |  `-- main 
| |   |-- java 
| |   | `-- eleague 
| |   |  `-- ejb 
| |   `-- resources 
| |    `-- META-INF 
| |     |-- beans.xml 
| |     |-- persistence.xml 
| |     |-- (ejb-jar.xml) 
| |     `-- (jboss-ejb3.xml) 

elBLImpl упаковывается в баночку, и мне нужно обновить файл pom.xml в моем каталоге elEJB, чтобы добавить зависимость от elBLIMpl. Я попытался это:

 <dependency> 
     <groupId>${project.parent.groupId}</groupId> 
     <artifactId>elBLImpl</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> 
    </dependency> 

Maven говорит, что не может найти модуль:

Failure to find eS.eL:elBLImpl:jar:1.0-SNAPSHOT in http://my-repo-location 

Почему ищет для elBLImpl в репо, а не в самом проекте?

Эта часть является правильным:

eS.eL:elBLImpl 

То есть модуль, который elEJB зависит. Но почему maven ищет внешний репо, модуль является частью самого проекта. Я не должен слишком хорошо разбираться в maven, извините. Из моего EJB мне нужно создать экземпляры классов внутри модуля elBLImpl.

+0

вы должны указать, о какой конфигурации вы говорите, если вы ожидаете получить помощь. – eis

ответ

1

Просто догадаться, поскольку нам нужна дополнительная информация, но вы установили родительский артефакт для этого?

Кроме того, вы не укажете, где Maven должен искать определенную зависимость. Вы просто определяете все местоположения вашего репозитория, и Maven смотрит во всех них, включая ваше местное репо Maven в .m2, чтобы попытаться их найти.

+0

Я вижу, но я пытаюсь сказать Maven, что модулю EJB нужен модуль «sibling». Имеет ли это смысл? – user1154644

+1

Вы запускаете 'mvn install' из родительского pom? – Vidya

1

Maven не волнует, как вы формируете свою структуру проекта. После создания артефакта он помещался в локальный репозиторий. И каждый проект (вложенный или нет) может получить любой другой арктик только из этого репозитория (если не определено ни одного другого репозитория). Поэтому, если у вас возникли проблемы с получением какого-либо артефакта, но вы его построите - проверьте, что этот артефакт <parent>, <artifactId> и <version> такой же, как вы определяете как зависимость.

+0

Как добавить в мой локальный репозиторий? – user1154644

+0

только что построил его с maven, запустил команду 'mvn clean install' – msangel

+0

та же ошибка не могла разрешить зависимость, но она искала ее в репо, который я определил в <репозиториях> на корневом уровне проекта. Имп является частью фактического проекта. – user1154644

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