Maven не добавляет classpath в проект Eclipse
У меня есть проект maven, который я работаю над Eclipse.
Я использую maven eclipse: eclipse для генерации пути к классам, но... он НИКОГДА не добавляет путь к классам в проекте eclipse. Я пробовал maven-eclipse-plugin, я пробовал плагин M2Eclipse, но не имеет значения, что я делаю, я не могу заставить записи classpath начать работу. У меня много ошибок в построении, даже я думал, что maven отлично разбирает ухо.
Любые рекомендации?
Спасибо за любой ответ!
UPDATE: Здесь мой корневой путь пути:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="core/src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="core/src/main/resources"/>
<classpathentry kind="src" path="client/src/main/java"/>
<classpathentry kind="src" path="client/src/main/resources"/>
<classpathentry kind="src" path="junit_server/src/main/java"/>
<classpathentry kind="src" path="initializer/src/main/java"/>
<classpathentry kind="src" path="initializer/src/main/webapp"/>
<classpathentry kind="src" path="site/src/main/webapp"/>
<classpathentry kind="src" path="core/src/test/java"/>
<classpathentry kind="src" path="core/src/test/resources"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="var" path="M2_REPO"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
UPDATE2: Это мой. проект:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>coreisp_back</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Ответы
Ответ 1
Настройка, созданная плагином Maven Eclipse, несовместима с m2e/m2eclipse. Если вы хотите использовать Maven и Eclipse вместе, ваш лучший курс - удалить любую модификацию вашей установки, сгенерированную плагином maven eclipse, и использовать m2e для импорта вашего проекта Maven.
Ответ 2
Ответ 3
Вам нужно добавить дополнительные исходные папки в pom.xml с помощью модуля build-helper-maven-plugin.
Затем запустите
mvn eclipse: clean eclipse: eclipse
Например, это pom.xml..
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>artifact</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>client/src/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>client/src/main/resources</directory>
<targetPath>resources</targetPath>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Создает этот .classpath
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="client/src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="client/src/main/resources" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
Убедитесь, что папки существуют, если путь неправильный, они не будут добавлены.
Ищите это в журнале maven.
[INFO] пропустить не существующий ресурсDirectory/tmp/artifact/src/main/resources
Моя команда нашла плагины eclipse maven неустойчивыми, решив создать всю конфигурацию eclipse через maven.
Ответ 4
Это полагается на m2eclipse. Когда вы это делаете, все ваши зависимости обрабатываются maven/m2eclipse, поэтому ваш .classpath становится очень минимальным.
В рамках архитектуры проекта вам нужен один проект eclipse на maven pom.
Каждый проект .classpath содержит только источники, JRE и maven injection:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
(отрегулируйте в зависимости от того, где находятся ваши источники).
Я подозреваю, что ваши многочисленные ошибки исходят из повторяющихся записей в зависимостях, потому что вы вводите их как вручную (дополнительные записи .classpath), так и через maven.
Вы также хотите, чтобы разрешить локальное разрешение рабочей области в m2eclipse включено (должно быть включено по умолчанию).
Ответ 5
По умолчанию установки mvn автоматически не импортируются в eclipse.
Итак, после запуска mvn install из командной строки. Выполните следующую команду:
mvn eclipse: eclipse
Это импортирует все банки в ваш проект eclipse и также обновит путь к классам.
Вам необходимо выполнить указанную выше команду в первый раз, когда вы добавите новую зависимость в свою POM и выполните компиляцию или установку mvn.
Ответ 6
В дополнение к самому проголосовавшему ответу вы все равно можете остаться со сломанным проектом, без "Maven Dependencies" (Kepler) и без разрешения класса.
В моем случае мой локальный файл репозитория maven.xml удалился, когда сторонний sdk обновил себя, после перезапуска eclipse, похоже, удалось удалить ссылку на этот файл settings.xml.
Как только я вернул файл и ссылался на него в Maven > Установки > Глобальные настройки:/home/andy/.m2/settings.xml, очистка каждого проекта начиналась с всего необходимого разрешения пути к классам. просто поделитесь.
Для меня результирующие файлы выглядели так:
.classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
.project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>jemh-ao</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
Ответ 7
Проблема, с которой я сталкиваюсь, - это преобразование проекта в maven. Мне нужно очистить Run Configuration, так как преобразование не обновляет путь к классам, чтобы настроить пути класса maven-dependency. ![Eclipse Run Configuration classpath должен показывать зависимости maven]()