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>
Maven Eclipseプラグインによって生成されたセットアップは、m2e/m2Eclipseと互換性がありません。 MavenとEclipseを一緒に使用したい場合は、maven Eclipseプラグインによって生成されたセットアップの変更を削除し、m2eを使用してMavenプロジェクトをインポートするのが最善の方法です。
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構成全体を作成することにしました。
デフォルトでは、mvnインストールはEclipseに自動的にインポートされません。そのため、コマンドプロンプトからmvn installを実行した後。次のコマンドを実行します。
mvn Eclipse:eclipse
これにより、すべてのjarがEclipseプロジェクトにインポートされ、クラスパスも更新されます。
POMに新しい依存関係を初めて追加し、mvnコンパイルまたはインストールを実行するときに、上記のコマンドを最初に実行する必要があります。
これは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のローカルワークスペースの解像度が有効になっていることを確認する必要があります(デフォルトでオンになっている必要があります)。
最も投票された答えに加えて、壊れたプロジェクト、「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>