M2ECLIPSE - детские проекты внезапно не могут видеть друг друга
Вопрос
Не очень хороший титул, я постараюсь объяснить.
Это работало в течение нескольких месяцев, то сегодня по какой-то неизвестной причине Eclipse не может решить любой из импорта из братьев и сестер (сверстников), когда ничего не изменилось (действительно!). Нет обновления плагина Eclipse или Eclipse, отсутствие исходного кода изменяется, нет никаких изменений конфигурации.
У меня довольно стандартная структура проекта:
parent_project - clild_project_a ---- pom.xml - clild_project_b ---- Pom.xml - Child_Project_c ---- Pom.xml - Pom.xml (для родителя).
Теперь оба проекта A и B зависят от кода из c.
Проект Pom.xml.
<parent>
<artifactId>parent_project</artifactId>
<groupId>com.mydomain.ge</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
...
<dependencies>
<dependency>
<groupId>com.mydomain.ge</groupId>
<artifactId>child_project_c</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
и в родительском pom.xml:
<modules>
<module>child_project_a</module>
<module>child_project_b</module>
<module>child_project_c</module>
</modules>
Так что теперь в Eclipse все операторы импорта в проекте проекта импортируют из проекта C:
package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;
Это дает:
The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.
Я попробовал следующее:
- Делая Maven Clean (используя правый клик-> Run As-> Maven Clen на всем ребенку и родителям.
- Делать зависимости обновления Maven по всем проектам
- Делая пакет Maven на каждом проекте.
- Делая M2 Maven -> «Обновить конфигурации проекта» на все проекты.
- Перезапустить затмение.
- Перезапуск компьютера.
Примечание 1, В Eclipse у меня есть 4 отдельных проекта, один для каждого ребенка и один для родителя. Три детских проекта также проверяются в SVN, но я не могу легко контролировать родительский проект, так как он имеет папки дочернего проекта под ним.
ЗАМЕТКА 2, Я много знаю о муравье, но я нуб в Мавене, но не имел никаких проблем с этим до сих пор. Например, я понятия не имею, если Maven говорит затмением, чтобы использовать источник проекта деликанта, или если он должен постоянно компилировать банку в локальный репозиторий M2, и зависимый проект использует это.
ЗАМЕТКА 3, Все другие (внешние) зависимости в порядке.
Примечание 4, Проверено я проверил, что «разрешать зависимости от проектов рабочей области».
Примечание 5., в ECIPSE Java Build Path Dialogoge, проекты сверстников, на которых он зависит, не кажется ни в «источниках», «проектах» или «библиотеках» вкладках. Библиотеки имеют подменю «Maven Nepenences», но под Thare - только внешние банки, такие как log4j.
Решение
Это работает, если вы делаете mvn clean install
На родительском POM из командной строки вместо в затмении? Это исключит две вещи:
- Независимо от того, является ли это проблема затмения
- Должен ли ваша проблема связана с вами
package
вместоinstall
Я заметил, что вы использовали цель пакета Maven. В общем, вы всегда должны делать mvm clean install
вместо mvn clean package
Для работы на вашей местной машине. Если вы не используете цель установки, то Project C никогда не устанавливается в ваш локальный репозиторий (по умолчанию по умолчанию в HOME / .M2 / REPOSIOGHINY или EQUIV в Windows) и, таким образом, не смогут будет ссылаться на проекты и Б.
Неспособность, идите внутрь вашего $ HOME / .M2 / REPOSIORY и проверьте фактическую установленную .jar / .pom для проекта c. Это путь каталога будет соответствовать его координатам Maven (например, COM / Mydomain / GE / Child_Project_C / 0.0.1-Snapshot). Убедитесь, что банка имеет классы, которые вы ожидаете внутри этого, и убедитесь, что POM установлен рядом с ним, похоже на то, что в вашем исходном репозитере.
Другие советы
Не удается провести комментарий, но не должен M2ECLIPSE разрешать проекты рабочего пространства вместо того, чтобы установить их в локальный репозиторий и разрешение их оттуда?
Я выяснил, что MVN довольно привлекательный о том, что написано в build.properties
Действительно Я столкнулся с той же проблемой и должен был позаботиться об этом
- Обе
source.. = src/
а такжеoutput.. = bin/
правильно вошли. bin.includes = META-INF,/
а также.
правильно вошли.
После того, как я исправил это, MVN чистая установка работала как очарование! @ Кали, спасибо за подсказку с $HOME/.m2/repository
Он фактически привел меня к тому, чтобы файлы были действительно отсутствуют в банке, из-за вышеупомянутых причин!