web-dev-qa-db-ja.com

MavenはEclipseプロジェクトにクラスパスを追加しません

Eclipseで作業しているMavenプロジェクトがあります。

Maven Eclipse:eclipseを使用してクラスパスを生成しますが、... Eclipseプロジェクトにクラスパスを追加することはありません。私はmaven-Eclipse-pluginを試しました。M2Eclipseプラグインを試しましたが、何をしても構いません。動作を開始するためにクラスパスエントリを取得できません。私は多くのビルドエラーがあり、Mavenが耳を完璧に構築すると考えていました。

ガイドラインはありますか?

答えてくれてありがとう!

更新:ここに私のルートクラスパスがあります:

<?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>

更新2:これは私の.projectです:

<?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>
28
Andre Cardoso

Maven Eclipseプラグインによって生成されたセットアップは、m2e/m2Eclipseと互換性がありません。 MavenとEclipseを一緒に使用したい場合は、maven Eclipseプラグインによって生成されたセットアップの変更を削除し、m2eを使用してMavenプロジェクトをインポートするのが最善の方法です。

16
Nicola Musatti
  • Eclipse Indigoへのアップグレード(3.7)
  • M2eプラグインをインストールします( http://www.Eclipse.org/m2e/download/ )。
  • ファイル->インポート->既存のMavenプロジェクトを使用enter image description here

Build-helper-maven-pluginを使用して、pom.xmlに追加のソースフォルダーを追加する必要があります。次に実行する

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ログでこれを探してください。

[情報]存在しないresourceDirectory/tmp/artifact/src/main/resourcesをスキップします

私のチームは、Eclipse Mavenプラグインが不安定であることがわかり、Mavenを使用してEclipse構成全体を作成することにしました。

6
Stephen

私が遭遇する問題は、プロジェクトをMavenに変換した後、変換がクラスパスを更新してMaven依存クラスパスを構成しないため、実行構成をクリアする必要があることです Eclipse Run Configuration classpath should show maven dependencies

1
james_t

デフォルトでは、mvnインストールはEclipseに自動的にインポートされません。そのため、コマンドプロンプトからmvn installを実行した後。次のコマンドを実行します。

mvn Eclipse:eclipse

これにより、すべてのjarがEclipseプロジェクトにインポートされ、クラスパスも更新されます。

POMに新しい依存関係を初めて追加し、mvnコンパイルまたはインストールを実行するときに、上記のコマンドを最初に実行する必要があります。

1
Gagan M

これはm2Eclipseに依存しています。これを行うと、すべての依存関係がmaven/m2Eclipseによって処理されるため、.classpathは非常に最小限になります。

プロジェクトアーキテクチャに関しては、Maven POMごとに1つのEclipseプロジェクトが必要です。各プロジェクトの.classpathには、ソース、JRE、およびmavenインジェクションのみが含まれます。

<?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のローカルワークスペースの解像度が有効になっていることを確認する必要があります(デフォルトでオンになっている必要があります)。

1
ptyx

最も投票された答えに加えて、壊れたプロジェクト、「Maven Dependencies」(Kepler)、およびクラスパスの解決がないままにすることができます。

私の場合、サードパーティのSDKが更新されたときにローカルのMavenリポジトリsettings.xmlが削除されました。再起動後、Eclipseはそのsettings.xmlファイルへの参照をクリアしたようです。

ファイルを元に戻し、Maven> Installations> Global Settings:/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>
1
Javahollic