M2ECLIPSE - детские проекты внезапно не могут видеть друг друга

StackOverflow https://stackoverflow.com/questions/3476894

Вопрос

Не очень хороший титул, я постараюсь объяснить.

Это работало в течение нескольких месяцев, то сегодня по какой-то неизвестной причине 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 из командной строки вместо в затмении? Это исключит две вещи:

  1. Независимо от того, является ли это проблема затмения
  2. Должен ли ваша проблема связана с вами 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Действительно Я столкнулся с той же проблемой и должен был позаботиться об этом

  1. Обе source.. = src/ а также output.. = bin/ правильно вошли.
  2. bin.includes = META-INF,/ а также . правильно вошли.

После того, как я исправил это, MVN чистая установка работала как очарование! @ Кали, спасибо за подсказку с $HOME/.m2/repository Он фактически привел меня к тому, чтобы файлы были действительно отсутствуют в банке, из-за вышеупомянутых причин!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top