Подтвердить что ты не робот

В Eclipse m2e, как ссылаться на проект рабочей области?

Как я могу ссылаться на другой проект рабочей области, используя Eclipse m2e?

Нужно ли добавлять зависимость проекта в настройку проекта? Но в этом случае зависимость не показана в pom.

Если я установил их в pom, он не будет ссылаться на проект в рабочей области, а ссылается на банку в локальном репозитории. Довольно раздражает, кто-нибудь может помочь?

4b9b3361

Ответ 1

Правильный способ сделать это:

  • Используйте только раздел зависимостей в файле POM, не играйте с ссылками на проект Eclipse. Щелкните проект правой кнопкой мыши, затем выберите Maven > Обновить конфигурацию проекта до reset проекта до настроек Maven по умолчанию. Таким образом, m2e имеет право собственности на зависимости.
  • Убедитесь, что все проекты, на которые имеются ссылки, открыты в Eclipse и имеют характер Maven.
  • Проверьте настройки Maven для каждого проекта, убедитесь, что groupId, artifactId и версия соответствуют проектам, которые вы открыли в Eclipse. Так что если проект, на котором вы зависеть, имеет версию 1.0.0-SNAPSHOT в Eclipse, убедитесь, что зависимый проект POM файла ссылается на версию 1.0.0-SNAPSHOT в разделе зависимостей.
  • Включить разрешение рабочей области для каждого из проектов. Щелкните правой кнопкой мыши проект, затем Maven > Включить разрешение рабочей области.
  • Наконец, если проекты еще не решены, снова щелкните проект правой кнопкой мыши, затем Maven > Обновить проект

Это должно решить вашу проблему. Если после этого ваши зависимости все еще ссылаются на файловую систему, снова проверьте groupId, artifactId и особенно версию каждой зависимости.

Также проверьте, нет ли у вас ошибок в вашем проекте - попробуйте запустить установку Maven.

Ответ 2

Я бы пошел еще дальше. Если у вас когда-либо выполнялся mvn eclipse:eclipse в вашем проекте, то, вероятно, у вас проблемы. У меня была ситуация, когда у меня были и раздел "Связанные библиотеки", и раздел "Зависимости Maven" в моем проекте eclipse с противоречивыми версиями библиотеки, что вызвало затмение и меня неизбежную путаницу.

Самая безопасная вещь, которую я нашел, заключалась в том, чтобы запустить mvn eclipse:clean из командной строки, затем вернуться в затмение, обновить проект, "ОК" в результате возникшего диалогового окна проблем, а затем перейти в Maven > Update Project. Это отсортировало все для меня.

Ответ 3

Когда eclipse запутался с импортом и удалением нескольких проектов, вам может потребоваться перестроить индекс хранилищ maven. Вот как я это сделал.

  • Проверьте, правильно ли описанный проект распознан как проект maven с помощью eclipse.

    В строке меню нажмите Window -> Show View -> Other...
    Когда появится окно "Показать представление", выберите Maven -> Maven Repositories
    В окне Maven Repositories вы должны увидеть свой проект как файл jar в Local Repositories -> Workspace Projects
    Если вы не можете найти свой проект в Workspace Projects, щелкните правой кнопкой мыши по Workspace Projects и выберите Rebuild Index.

  • Обновление maven проекта ссылок

    Щелкните правой кнопкой мыши проект ссылки, Maven -> Update Project... -> OK

Ответ 4

Вам также необходимо убедиться, что вы выполняете правильные цели.

Если вы не запустите цель установить, она не будет скопирована в ваш репозиторий и не будет компилироваться.

Чтобы узнать больше о целях, посмотрите https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Ответ 5

С благодарностью к ответу @nwinkler основной проблемой является совпадение номера версии.

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

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

С зависимостью библиотеки POM проекта приложения, установленной на версию выпуска (скажем, 1.0.0), и при работе над следующим выпуском, когда проекты приложения и библиотеки установлены на выпуск SNAPSHOT (скажем, 2.0.0-SNAPSHOT), m2e не сможет правильно определить версию библиотеки и, вероятно, загрузит старую версию, так что попытка использовать функции Eclipse, такие как "Open Decleration", нацелится на загрузочную флягу (иногда даже без исходного вложения), что может быть довольно раздражающим.

Один из способов обойти это - установить диапазон зависимостей версии POM приложения, поэтому вместо зависимости от 1.0.0 вы будете зависеть от [1.0.0-). С таким открытым диапазоном m2e с радостью найдет ваш проект библиотеки рабочей области. Но вы бы хотели вернуть его к "правильной" версии перед фиксацией, сборкой и публикацией - и это может быть очень подвержено ошибкам.

Мое решение состоит в том, чтобы использовать профили сборки и установить собственный профиль для m2e, например так:

  • Задайте версию зависимости со свойством для версии, которую вы хотите опубликовать для:
...

<properties>
<my.library.version>1.0.0</my.library.version>
</properties>

<dependencies>
  <dependency>
    <groupId>my.group</groupId>
    <artifactId>my.library</artifactId>
    <version>${my.library.version}</version>
  </dependency>
</dependencies>

...
  • Затем добавьте раздел профиля с активным по умолчанию проектом, который ничего не делает, и проектом, специфичным для Eclipse, который переопределяет свойство версии библиотеки диапазоном:
...

<profiles>
    <profile>
        <id>default</id>
        <activation><activeByDefault></activeByDefault></activation>
    </profile>

    <profile>
        <id>eclipse</id>
        <properties>
            <my.library.version>[1,)</my.library.version>
        </properties>
    </profile>
</profiles>

...
  • Наконец, перейдите в свойства вашего проекта и в разделе "Maven" введите "eclipse" в "Active Maven Profiles":

enter image description here

  • Затем "Применить и закрыть".

Затем Eclipse m2e всегда будет видеть диапазон версий и разрешит зависимости из проекта eclipse (даже если у вас установлена библиотека в локальном репозитории Maven, поскольку у проекта Eclipse будет более высокий номер версии), но другие сборщики увидят исходный файл, строгий, номер версии.