2015-12-01 4 views
6

Я использую Maven 3.3.3 вместе с Eclipse Mars и m2e. Вчера я создал новый проект Java и преобразовал его в Maven.Maven вдруг хочет src/вместо src/main/java

Впоследствии путь к классу содержал только src вместо стандарта src/main/java. Я был удивлен, но я просто создал недостающие папки и запустил проект обновления m2e. Это не решило проблему; m2e все еще настаивал на использовании только src.

Так что я редактировал классам вручную, чтобы в итоге с обычным

src/test/java 
src/test/resources 
src/main/java 
src/main/resources 

Когда я пытаюсь "Project Update" m2e теперь я получаю эту ошибку:

Cannot nest 'foo/src/test/java' inside 'foo/src'. To enable the nesting, exclude 'test/' from 'foo/src' 

вздоха I затем отправился в командную строку и запустил mvn eclipse:eclipse, чтобы получить этот класс:

src/test/java 
src/test/resources 
src 
src/main/resources 

Теперь я полностью в тупике. Почему это происходит?

ответ

20

Откройте POM в редакторе POM и нажмите на вкладку «Эффективная POM». Найдите sourceDirectory. Вы, вероятно, увидеть что-то вроде этого:

<sourceDirectory>src</sourceDirectory> 

При первом преобразовал проект Java в Maven, m2e пытался сохранить путь к классам то же самое. Проекты Eclipse Java по умолчанию имеют разный макет. Они используют src/ вместо src/main/java/. Нет тестовой папки, поскольку проекты Eclipse обычно ставят свои тесты в другой проект.

Чтобы устранить проблему:

  1. Удалить sourceDirectory элемент из POM (Примечание: Это может быть в родительском ПОМ).
  2. Перейти к проекту
  3. Выберите все исходные папки
  4. удалить их из пути сборки (контекстное меню -> Build Path -> Удалить из сборки Path).
  5. Обновить проект

ошибка должна исчезнуть, и путь к классам должен быть правильным.

+0

Это работало для меня, хотя я мог бы пропустить шаг 1. – turboemu

+0

Это работало блестяще, но почему? –

+0

@turboemu Если вы это сделаете, тогда проблема вернется, в конце концов. –

1

Есть два типа папок, которые вы можете создать: 1) Пакет 2) Источник Папка

1) Пакет выглядит следующим образом enter image description here

Чтобы создать пакет, щелкните правой кнопкой мыши на вас папку хочу (в моем примере, я сразу же нажал на Java Resources) -> New -> Пакет

enter image description here

всплывающее окно, которое выглядит, как это должно появиться

enter image description here

«Источник папка:» То есть, где вы выбираете ваш проект. Если вы ничего там не видите, нажмите «Обзор ...» и найдите свой проект. Если я нажму «Обзор ...», это будет выглядеть так:

«Имя:» - это имя, которое вы дадите вашему пакету.

enter image description here

Примечание: Пакеты должны быть в исходных папках. Исходные папки - это родительская папка.

2) Папки с исходными файлами выглядеть следующим образом: enter image description here

Для создания источника папки, щелкните правой кнопкой мыши на папке, которую вы хотите (в моем примере, я сразу же нажал на Java Resources) -> New - > Источник Папка

enter image description here

в разделе «название проекта:» написать название вашего проекта. Если вам нужна помощь, нажмите «Обзор ...»

В разделе «Имя папки:» укажите нужное имя папки.

Ошибка: если вы пытаетесь создать папку «src/main/resources», и вы столкнулись с этой ошибкой «Can not inest» ProjectName внутри «ProjectName». Чтобы включить вложенности исключить «основной /» от

enter image description here

Решение:

--Pic 8--