2015-06-24 6 views
4

Недавно я начал разработку проекта Spring MVC maven. После того, как я запустил команду mvn eclipse:eclipse из конфигураций запуска, все зависимости maven отображаются вне проекта, а не в представлении иерархии «Maven Dependencies». Когда я переключу свою перспективу проекта на Java из Java EE, то зависимости находятся под Referenced Libararies.Maven jar dependencies отображаются за пределами `Maven Dependencies` view

Screenshot

Мои .project и .classpath содержимое файла метаданных.

У кого-нибудь появилась идея о том, как отображать все банки под изображением Maven Dependencies?

+3

Да. Не используйте плагин eclipse из maven. Используйте плагин maven из eclipse. Средство: не запускайте 'mvn eclipse: eclipse' в любом проекте, но импортируйте проект как проект maven в eclipse и пусть плагин M2E выполняет свою работу. – Seelenvirtuose

+1

Ядром любого проекта maven является каталог 'src' и' pom.xml'. Ничего больше. При импорте Eclipse создает файлы метаданных и каталоги ('.project',' .classpath', '.settings /'). Поэтому вы можете удалить их в первую очередь. Кстати: плагин eclipse из maven также создает их, но они тогда не всегда подходят. – Seelenvirtuose

+0

@Seelenvirtuose Спасибо за ваши материалы. Удалите каталоги сейчас и попробуйте. – Lucky

ответ

7

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

плагин Maven Eclipse,

Предположим, у вас есть следующий каталог проекта:

/hello-world/ 
    +-- src/ 
    +-- pom.xml 

Теперь запустить mvn eclipse:eclipse внутри этого каталога eclipsify это. Это создаст некоторые файлы метаданных:

/hello-world/ 
    +-- src/ 
    +-- pom.xml 
    +-- .project 
    +-- .classpath 

Файл .project будет содержать строку комментария с утверждением

NO_M2ECLIPSE_SUPPORT: файлы проекта, созданные с помощью Maven-плагин Eclipse, которые не поддерживаются в M2Eclipse.

.classpath будет иметь записи для зависимостей, подобные этим:

<classpathentry kind="var" path="M2_REPO/com/google/guava/guava/18.0/guava-18.0.jar" sourcepath="M2_REPO/com/google/guava/guava/18.0/guava-18.0-sources.jar"/> 
<classpathentry kind="var" path="M2_REPO/junit/junit/4.12/junit-4.12.jar" sourcepath="M2_REPO/junit/junit/4.12/junit-4.12-sources.jar"/> 
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar"/> 

Обратите внимание, что эти записи с использованием затмение внутренней переменной: M2_REPO, который указывает на локальный репозиторий Maven. После того, как все эти записи являются простыми библиотечными записями. То же самое, что вы получите при добавлении библиотеки в путь сборки.

Если вы импортируете это через «Существующие проекты в рабочее пространство», вы точно получите проект, который вы описали. Библиотеки просты. записи о путях пути. И - что более важно - у него нет природы maven (отсутствует значок «M»). Это было упомянуто в файле .project. Без характера maven у вас нет полезных и важных функций для этого проекта.

Затмение Maven плагин

Итак, давайте ремонт этого. Сначала создайте резервную копию каталога проекта (в случае чего-то не так).

Первый шаг - удалить проект из затмения, но не из жесткого диска.Поэтому просто удалите его в eclipse, но не галочка «Удалить содержимое проекта на диске». Вы все еще хотите иметь этот проект, не так ли?

Шаг 2: Перейдите в каталог проекта и удалите любые метафайлы eclipse (я уже говорил вам). Впоследствии у вас есть тот же каталог проекта, что и в исходной ситуации.

Шаг 3: Теперь вы можете импортировать этот проект в eclipse с помощью «Существующих проектов Maven». Перейдите в каталог, содержащий ваш проект (может быть каталог рабочей области) и выберите ваш проект.

После этого вы заметите, что этот проект теперь имеет характер maven. На значке проекта есть значок «M». Кроме того, вы увидите все библиотеки под узлом «Maven Dependencies».

Почему это так? Давайте посмотрим на мета-файлы снова:

Файл .project теперь также содержит следующие строки (среди прочих):

<buildCommand><name>org.eclipse.m2e.core.maven2Builder</name></buildCommand> 
<nature>org.eclipse.m2e.core.maven2Nature</nature> 

.classpath теперь также имеет следующую запись:

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

И плагин M2E теперь делает все остальное. Легко, не так ли?

+0

wow Great !! Спасибо, что решил. но у меня нет файла .classpath в корневом каталоге проекта. Я мог найти только файл '.project' и' .settings'. Однако я удалил их, как вы предложили, и импортировал проект как существующие проекты Maven. Но после импорта в качестве существующего проекта Maven создается файл '.classpath'. См. Мою ссылку pasteshin этого содержимого файла в моем обновленном ответе – Lucky

0

@ Lucky close затмение. выполните затмение: очистите из командной строки и импортируйте проект как проект Maven .. (предполагая, что в eclipse установлен плагин maven). Я думаю, что это покажет его желаемым образом.

+0

Единственное предостережение здесь: 'eclise: clean' удаляет файлы .project, .classpath, поэтому если OP выполнил любую настройку, которая будет удалена с помощью этого метода. В противном случае это, вероятно, самый быстрый способ восстановления. – Gus