Проект 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 properties
→ Java Build Path
→ Source
tab → Add Folder...
.
Ответ 2
Щелкните правой кнопкой мыши по Project
→ Properties
→ Project 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.