Проект Maven не рассматривается как Java в Eclipse

Я работаю над проектом, в котором много разных проектов Maven. Я выполнял кучу тестов JUnit для этих проектов, и обычно это происходит хорошо. Я открываю Eclipse, щелкнув правой кнопкой мыши в проводнике пакетов → Импорт... Существующие проекты Maven, и я могу успешно импортировать проект. Я могу построить, перейти к src/test/java... Щелкните правой кнопкой мыши на файле и выполните тест Run As JUnit. Время от времени я не могу заставить это работать. Если я щелкнул правой кнопкой мыши, чтобы выполнить Run As, все, что я получаю, это AspectJ/Java-приложение. Там нет тестов JUnit.

Я заметил, что значок рядом с папкой проекта имеет только значок M и папку, тогда как в проектах, которые работают, есть папка M, AND AJ. Я также заметил, что он не сортирует файлы в своих пакетах, как обычные Java-проекты. Похоже, что он не рассматривает проект как проект AspectJ. Как заставить Eclipse распознать этот проект Maven как проект Java?

Ответ 1

Некоторые из существующих ответов должны работать, но те, которые предлагают добавить фасет Java, будут работать только в том случае, если ваш проект уже имеет (или вы хотите его преобразовать) ограненный характер, и тот, который предлагает вам изменить ваш pom.xml будет работать, только если вы повторно импортируете свой проект в качестве проекта maven.

Если вы хотите "исправить" существующий проект, то есть добавить природу Java, не преобразовывая ее в фасетную форму и не удаляя и повторно импортируя, просто отредактируйте свой файл .project (внешне или с помощью вида "Навигатор" в eclipse, поскольку он не будет отображаться в вашем проводнике пакетов) и добавьте java-конструктор и java-структуру в существующий maven-конструктор/природу:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>yourprojectname</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <!-- add this build command -->
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <!-- this would've already been there -->
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <!-- add this nature -->
        <nature>org.eclipse.jdt.core.javanature</nature>
        <!-- this would've already been there -->
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

Обратите внимание на различную капитализацию (javabuilder, но maven2Builder, javanature, но maven2Nature).

Как только вы сохраните, он должен автоматически заново построить. Возможно, вам придется вручную добавить любые исходные папки (Project propertiesJava Build PathSource tab → Add Folder....

Ответ 2

Щелкните правой кнопкой мыши по ProjectPropertiesProject Facets, затем выберите все грани, которые применяются для вашего случая (например, java).

Ответ 3

В зависимости от свойств Eclipse facet (если вы используете Java EE), я предлагаю вам щелкнуть правой кнопкой мыши по свойствам проекта и посмотреть, какие фасет определен для вашего проекта.

Ответ 4

У меня возникла та же проблема (после импорта pom.xml в eclipse проект не рассматривается как java, и в качестве свойства проекта есть только "maven project builder", но нет "java-builder" ) в eclipse луна.

Повторный импорт проекта maven после удаления папки ".settings" и ".project" не работал. Повторный импорт после переключения рабочего пространства работал у меня.

Ответ 5

Я столкнулся с одной и той же проблемой, и описанные ниже шаги решили это в моем случае:

1- Откройте pom.xml проблемного проекта.

2 - На вкладке "Обзор" проверьте настройки Artifact/Packaging.

3- Если установлено значение "pom", измените его на "jar".

4- Сохраните изменения, а затем удалите проект только из eclipse и повторно импортируйте его.

Надеюсь, что это поможет!

Ответ 6

Проверьте файл pom.xml для проектов, которые не получают природу AspectJ (AJ в проекте). Они пропускают плагин AspectJ-Maven? У них должен быть раздел вроде:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <!-- use this goal to weave all your main classes -->
          <goal>compile</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <complianceLevel>1.6</complianceLevel>
    </configuration>
</plugin>

Также взгляните на его вопрос: Проект Maven/AJDT в Eclipse

Ответ 7

Я поговорил с сотрудником, и я смог "исправить" проблему. Я сделал удаление с Eclipse (а не с диска) и сразу же повторил импорт Maven, и теперь он волшебным образом работает.

Похоже, если была ошибка с pom.xml, особенно если родительская версия была неправильной, что проект maven не получает импорт/создание должным образом. Как только я исправил проблемы в POM, проект будет строить без проблем, но это был только проект Maven. Как только я удалил его и снова импортировал, THEN он рассматривал его как проект Maven/AspectJ.

Ответ 8

mvn eclipse: eclipse создаст необходимые .project файлы, которые добавят в проект java-характер и другие свойства

Ответ 9

Мои пять центов... В моем случае я "терял" всегда "природу Java" проекта, потому что файл pom был настроен на "пакет как ухо". Однако не было сообщений об ошибках или предупреждениях, что было бы неплохо иметь. Как только я сменил пакет на "jar", я смог установить характер проекта Java, и он сохраняется.

Ответ 10

Я также пробовал все подходы, описанные в этом потоке. Изменение только .project недостаточно, потому что библиотеки maven не будут использоваться для построения проекта, и сборка проекта завершится с ошибкой. mvn eclipse: eclipse создаст длинный и бесполезный путь .classpath без фактического использования m2e.

Самый простой способ - создать новый проект java, преобразовать его в проект Maven и открыть .project и .classpath для этого нового проекта. Затем выполните аналогичные изменения для импортированного проекта Maven.

Были описаны важные изменения для файла .project, но для использования зависимостей Maven в Eclipse что-то вроде этого должно быть в файле .classpath

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>

Использование фасетов в данном случае не является опцией, потому что с помощью граней Eclipse не использует m2e и зависимости maven. Опять же, зависимости от граней нужно управлять вручную.

Я пробовал все это с помощью Eclipse 4.6.2 Neon.