2011-08-15 76 views
25

我有一個maven項目,我正在使用Eclipse。Maven不會將類路徑添加到Eclipse項目

我使用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> 

UPDATE2:這是我的.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> 

回答

15

Maven Eclipse插件生成的設置與m2e/m2eclipse不兼容。如果你想一起使用Maven和Eclipse,你最好的方法是刪除maven eclipse插件生成的設置的任何修改,並使用m2e導入你的Maven項目。

+1

對不起,我的無知,但你是什麼意思的「刪除任何修改您的設置」?從我的項目目錄(和模塊)中刪除.classpath,.project和.settings? –

+2

是的。理想情況下,在運行'mvn eclipse:eclipse'之前,你應該回頭看看你的項目是怎麼樣的。 –

+0

假設您從命令行構建項目沒有問題,那就是。 –

6
+1

我目前有Indigo,我已經安裝了插件,並導入了該項目。沒有交易... –

1

這依賴於m2eclipse的。當你這樣做時,你所有的依賴都由maven/m2eclipse處理,所以你的.classpath變得非常小。

在項目架構方面,您希望每個maven pom都有一個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中的本地工作區分辨率是否已啓用(應該默認打開)。

+0

更新:我有一個主POM和幾個模塊。該條目不在我的類路徑中,但是我應該將它添加到主類路徑還是模塊類路徑中? –

+0

在這裏,我把這個添加到我的.classpath: - >此創建了「Maven依賴」的構建路徑,但項目尚未正確建立。不能告訴你錯誤,因爲他們超過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整個Eclipse配置。

+1

希望我可以upvote許多次... – Brian

+0

輝煌....只是驚人的。萬分感謝 –

1

默認情況下,mvn安裝不會自動導入到eclipse中。 因此,從命令提示符運行mvn install之後。運行以下命令:

MVN日食:日食

這將導入所有的罐子到Eclipse項目,將更新的類路徑中。

您需要執行上面的命令是首次添加一個新的依賴你的POM,做一個MVN編譯或安裝。

1

除了最投票的答案,你仍然可以留下一個破碎的項目,沒有「Maven依賴」(開普勒)和無類路徑分辨率。

在我來說,當第三方SDK更新自身,重新啓動後日食似乎以清除引用到settings.xml文件我的本地倉庫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

我一個項目轉換爲後遇到了問題maven我需要清除運行配置,因爲轉換不會將類路徑更新爲confi gure maven-dependency classpaths。 Eclipse Run Configuration classpath should show maven dependencies

相關問題