m2eclipse - дочерние проекты вдруг не могут видеть друг друга - PullRequest
1 голос
/ 13 августа 2010

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

Это работало месяцами, а сегодня по неизвестной причине затмение не может разрешить любой импорт из братьев и сестер (одноранговые проекты), когда ничего не изменилось (правда!). Никаких обновлений плагинов Eclipse или Eclipse, никаких изменений исходного кода, никаких изменений конфигурации.

У меня довольно стандартная структура проекта:

parent_project
-- clild_project_a
---- pom.xml
-- clild_project_b
---- pom.xml
-- child_project_c
---- pom.xml
-- pom.xml (for parent).

Теперь оба проекта 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 все операторы импорта, скажем, в проекте A импортируются из проекта c:

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

Это дает:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

Я попробовал следующее:

  • делать чистку maven (используя правую кнопку мыши -> запустить as-> maven clen для всех детей и родителей.
  • Обновление зависимостей maven для всех проектов
  • делает пакет maven для каждого проекта.
  • делает m2 maven -> "обновлять конфигурации проекта" во всех проектах.
  • перезапуск затмения.
  • перезагрузка компьютера.

Примечание 1 , в затмении у меня есть 4 отдельных проекта, один для каждого ребенка и один для родителя. три дочерних проекта также проверены в SVN, но я не могу легко проверить родительский проект, так как под ним находятся дочерние проекты.
NOTE 2 , я много знаю об муравье, но я новичок в maven, но до сих пор с ним не было проблем. например Я не знаю, говорит ли Maven Eclipse, чтобы использовать исходный проект, или он должен постоянно компилировать jar в локальный репозиторий m2, и зависимый проект использует это.
ПРИМЕЧАНИЕ 3 , все остальные (внешние) зависимости в порядке.
ПРИМЕЧАНИЕ 4 , я проверил, что установлен флажок «Разрешить зависимости от проектов Workspace».
ПРИМЕЧАНИЕ 5 , в диалоге пути сборки Java ecipse, кажется, что одноранговые проекты, от которых он зависит, не находятся ни на вкладках «источник», «проекты» или «библиотеки». В библиотеках есть поддерево "maven зависимостей", но под ним находятся только внешние jar, такие как log4j.

Ответы [ 3 ]

1 голос
/ 13 августа 2010

Работает ли это, если вы делаете mvn clean install для родительского pom из командной строки вместо eclipse? Это исключит две вещи:

  1. Является ли это проблемой затмения
  2. Связана ли ваша проблема с использованием package вместо install

Я заметил, что вы использовали цель пакета maven. В общем, вы всегда должны делать mvm clean install вместо mvn clean package для работы на локальном компьютере. Если вы не используете цель установки, то проект C никогда не будет установлен в ваш локальный репозиторий (по умолчанию в $ HOME / .m2 / repository или эквивалент в Windows) и, следовательно, не сможет ссылаться на проекты A и Б.

Если это не удалось, зайдите в свой репозиторий $ HOME / .m2 / и проверьте фактический установленный .jar / .pom для проекта c. Путь к каталогу будет соответствовать координатам maven (например, com / mydomain / ge / child_project_c / 0.0.1-SNAPSHOT). Убедитесь, что в jar есть классы, которые вы ожидаете, и убедитесь, что pom, установленный рядом с ним, выглядит так же, как и в вашем исходном хранилище.

0 голосов
/ 01 июля 2013

Я узнал, что mvn довольно требователен к тому, что написано в build.properties!Я столкнулся с той же проблемой и должен был позаботиться о том, чтобы

  1. И source.. = src/, и output.. = bin/ были введены правильно.
  2. bin.includes = META-INF,/ и . введены правильно.1011 *

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

0 голосов
/ 14 октября 2010

Пока не можете комментировать, но не должен ли m2eclipse разрешать проекты рабочей области вместо их установки в локальный репозиторий и разрешения их оттуда?

...