Что такое org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER и как мне заставить его работать в IntelliJ?

У меня есть Java-код, написанный с помощью Eclipse, с которым я пытаюсь работать в IntelliJ. Кодовая база состоит из около 20 пакетов Java, созданных рядом друг с другом в виде отдельных проектов. (Есть около двадцати каталогов, каждый из которых содержит файлы .classpath и .project.) Они имеют зависимости друг от друга. Предположительно, все прекрасно работает в Eclipse.

Я импортировал IntelliJ из формата сборки Eclipse. В основном это работало, за исключением того, что Project Settings -> Modules -> Dependencies показывает, что многие проекты имеют нерегулярную зависимость от org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER. Кажется, что это происходит из следующих записей в файлах .classpath:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.nondependency" value=""/>
    </attributes>
</classpathentry>

Пакеты с этой зависимостью не строятся в IntelliJ, потому что они не могут разрешить зависимости для других пакетов.

Я подозреваю, что org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER - это какой-то трюк, специфичный для Eclipse, который не переводится в другую среду IDE, но я не могу точно определить, что здесь происходит.

Что такое org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER? Должен ли я делать что-то особенное для среды сборки, которая использует ее, чтобы заставить ее работать вне Eclipse?

IntelliJ Ultimate 2016.1.2, Java 1.8.0_91, OS X 10.11.5


Я работал над этой проблемой, перейдя в Project Settings- > Modules и вручную добавляя зависимости модулей между моими различными проектами до тех пор, пока все не построится. Достойный, но эффективный.

Я оставляю этот вопрос здесь, хотя, поскольку короткое определение org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER все равно было бы полезно для меня.

Ответ 1

Введение

Плагин IntelliJ IDEA Maven-2 интегрирует Maven-2 в IntelliJ IDEA.

Во-первых,

введите описание изображения здесь

Во-вторых,

введите описание изображения здесь

В-третьих,

введите описание изображения здесь

Подобно плагину Ant, плагин Maven-2 позволяет выполнять цели (или фазы) и перенаправлять вывод (с подсветкой ошибок) в окно сообщения.

Установка

Доступно для IDEA 6.0 (до версии 1.1 также для IDEA 5.0) через встроенный менеджер плагинов IDEA или непосредственно из {{http://plugins.intellij.net/plugin/?id=1166}}.

Если вы загрузили плагин, просто извлеките содержимое двоичного архива в каталог плагина IDEA. Выделенная папка (idea-maven-plugin) содержит другую папку lib, где находятся все JAR.

Использование

Предполагая, что вы указали переменные среды JAVA_HOME и M2_HOME, плагин должен быть готов к запуску без какой-либо дополнительной настройки. Если JAVA_HOME не определен, плагин использует внутренний IDEA JDK.

Если M2_HOME не определен, вы должны указать домашний каталог Maven-2 в диалоговом окне конфигурации. Это изменение, начиная с версии 1.1 плагина.

До версии 1.1 Maven был вызван через start script с нормальной установкой Maven. Чтобы получить лучший доступ к запущенному процессу Maven, Maven теперь вызывается непосредственно, начиная процесс Java. Это, например, позволяет завершить выполняемый пользователем процесс Maven.

Конфигурация может быть выполнена двумя способами:

Либо через настройки IDE, либо в настройках проекта. Настройки проекта всегда переопределяют настройки приложения!

Плагин не будет работать с версиями IDEA до 6.0! Плагин был протестирован под Windows и Linux. Он не был протестирован в Mac OS X.

Ссылка на ресурс:

Ответ 2

Я придумал решение, которое работает для меня, но щедрость все еще открыта (потому что я не могу ее закрыть: P), и пойдет к тому, кто может предоставить более подробное объяснение.

Решение: Запустите mvn eclipse:clean и mvn eclipse:eclipse. Это заставляет maven очистить файл .classpath и перестроить его из pom.xml. Несколько загадочно, он больше не содержал страшную ссылку на org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER.

Возможно, это устаревший тег/переменная в Eclipse.