Подтвердить что ты не робот

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>
4b9b3361

Ответ 1

Настройка, созданная плагином Maven Eclipse, несовместима с m2e/m2eclipse. Если вы хотите использовать Maven и Eclipse вместе, ваш лучший курс - удалить любую модификацию вашей установки, сгенерированную плагином maven eclipse, и использовать m2e для импорта вашего проекта Maven.

Ответ 2

  • Обновление до Eclipse Indigo (3.7)
  • Установите плагин m2e (http://www.eclipse.org/m2e/download/).
  • Используйте File- > Import- > Существующие проекты Maven enter image description here

Ответ 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