2011-08-15 58 views
25

私はEclipseで作業しているmavenプロジェクトを持っています。MavenはEclipseプロジェクトにクラスパスを追加しません

私はmaven eclipse:eclipseを使用してクラスパスを生成していますが、Eclipseプロジェクトにクラスパスを追加することは絶対にありません。私はmaven-eclipse-pluginを試しましたが、私はM2Eclipseプラグインを試しましたが、私が何をするにしても問題はありません。クラスパスのエントリを手に入れることができません。私は多くのビルドエラーがあります.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> 

アップデート2:のM2eプラグインをインストールインディゴ(3.7)

  • をEclipseに

    <?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> 
    
  • 答えて

    15

    Maven Eclipseプラグインによって生成された設定は、m2e/m2eclipseと互換性がありません。 MavenとEclipseを一緒に使用する場合は、maven eclipseプラグインで生成された設定の変更をすべて削除し、m2eを使用してMavenプロジェクトをインポートします。

    +1

    私の知らないことは申し訳ありませんが、 "設定を変更しないでください"という意味はどうですか?私のプロジェクトディレクトリ(およびモジュール)から.classpath、.project、および.settingsを削除しますか? –

    +2

    はい。理想的には、 'mvn eclipse:eclipse'を実行する前にプロジェクトがどのようになったのかに戻るべきです。 –

    +0

    問題なくプロジェクトをコマンドラインからビルドすると仮定します。 –

    6
    • アップグレード(http://www.eclipse.org/m2e/download/:これは私の.projectです)。これはm2eclipseに頼っている
    • 使用ファイル - > Import->既存のMavenプロジェクトenter image description here
    +1

    私は現在Indigoを持っており、プラグインをインストールしてプロジェクトをインポートしました。いいえ... –

    1

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

    プロジェクトアーキテクチャーでは、1つのプロジェクトごとに1つのEclipseプロジェクトが必要です。唯一の情報源、JREとMavenの注入が含まれています.classpath 各プロジェクト:

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

    +0

    更新:私はマスターPOMといくつかのモジュールを持っています。そのエントリはクラスパスにはありませんが、メインクラスパスまたはモジュールクラスパスに追加する必要がありますか? –

    +0

    ここでは、これを私の.classpathに追加しました:これはビルドパス上で "Maven Dependencies"を作成しましたが、プロジェクトまだ正しく構築されていません。彼らは10k以上だからエラーを教えてくれません:/ –

    5

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

    MVNの日食を実行します:クリーン日食を:

    例えば本の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]

    非既存resourceDirectoryを/ tmp /アーティファクト/ srcに/メイン/リソーススキップ私のチームは、Mavenを通じた全体日食の設定を作成することを選択、日食Mavenのプラグインが不安定であることが判明しました。

    +1

    私はもっと多くの時間upvoteできますか...。 – Brian

    +0

    素晴らしい....ただ素晴らしい。まことにありがとうございます –

    1

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

    MVNの日食:次のコマンドを実行します

    ケラレこれはあなたのEclipseプロジェクトにすべてのjarファイルをインポートしますし、同様にクラスパスを更新します。

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

    1

    最も投票された回答に加えて、依然として壊れたプロジェクト、「Maven Dependencies」(Kepler)およびクラスパス解決が残っている可能性があります。

    私のケースでは、再起動eclipseがsettings.xmlファイルへの参照をクリアしたように見えるので、サードパーティsdkがそれ自身を更新したときにローカルMavenリポジトリ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> 
    
    1

    私はプロジェクトを変換した後であるに実行する問題私はコンバージョンにクラスパスを更新しないので、Run Configurationをクリアする必要がありますクラス依存関係のクラスパス。 Eclipse Run Configuration classpath should show maven dependencies

    関連する問題