2012-08-08 103 views
0

Eclipse的Maven插件爲我的本地Maven存儲庫中的項目引用庫之一查找相關源代碼,並添加一個sourcepath屬性爲我的.classpath文件。Eclipse - 使用環境變量指向.classpath中sourcepath屬性中的本地maven repo

<classpathentry kind="lib" path="lib/core/guava-11.0.1.jar" sourcepath="Users/<my_user>/.m2/repository/com/google/guava/guava/11.0.1/guava-11.0.1-sources.jar"> 
    <attributes> 
     <attribute name="javadoc_location" value="http://docs.guava-libraries.googlecode.com/git-history/v11.0.1/javadoc/"/> 
    </attributes> 
</classpathentry> 

的問題是,因爲它包含我的本地Maven回購硬編碼的路徑,我不能提交.classpath文件。有沒有辦法告訴Eclipse使用像M2_HOME這樣的環境變量來輸出?即使它不是自動的,我是否可以放入任何令牌,讓它能夠在沒有硬編碼路徑的情況下解析源的位置?我試過了:

sourcepath="$M2_HOME/com/google/guava/guava/11.0.1/guava-11.0.1-sources.jar" 

但是Eclipse做了這個改變後無法解析這個庫的源位置。

任何想法?

回答

0

使用maven 2,您可以在Eclipse中設置M2_REPO classpath變量,並且maven eclipse:eclipse將在您的.classpath文件中自動使用它。詳情可以看這裏:http://www.mkyong.com/maven/how-to-configure-m2_repo-variable-in-eclipse-ide/

我們尚未遷移到Maven 3所以我不能肯定,但我想象中的變量需要被命名爲M3_REPO行家3.

+0

嗯,但如果我依靠Eclipse來構建我的項目,這將如何工作?我仍然能夠從Eclipse內部瀏覽我引用的Jar文件的源代碼嗎? – Bradley 2012-08-09 13:10:21

+0

另外,它看起來像我的Classpath Variables中已經有了這個變量:'M2_REPO -/Users/bradley/.m2/repository',但是當更新.classpath文件時,Eclipse的Maven插件沒有使用。 – Bradley 2012-08-09 13:20:22

+0

是的,您應該能夠瀏覽Eclipse內引用的jar文件的來源。 現在我檢查我的.classpath文件,我可以看到maven並不總是使用M2_REPO變量(對我來說這是javadoc的位置)。另外,我們不檢查我們的.classpath和.project文件 - 每個開發人員在第一次簽出項目時都會簡單地執行「mvn install eclipse:eclipse」,然後爲它們的系統進行全部設置(無論是Linux,Windows等)。 – DB5 2012-08-09 14:19:12

0

你是正確的,犯.classpath或.project文件不是一個好主意。 但是,正如m2e添加該值一樣,其他用戶的插件也一樣。如果需要,Maven將下載其他用戶PC所需的文件(即不在其本地回購),並在.classpath文件中提供正確的源路徑。

希望有幫助!

+0

我相信我已經在使用m2e,這是Eclipse知道如何將此源路徑添加到我的本地maven回購第一名。對?我自己沒有包含那個sourcepath屬性,當我在JAR文件中打開一個類時,它被添加了。還有別的事情會做到嗎? – Bradley 2012-08-09 13:08:49

+0

更新了我的答案 – 2012-08-09 22:11:20

0

我會將「guava-11.0.1.jar」添加到maven存儲庫,然後將其作爲依賴添加到我的pom.xml中。通過這樣做,你的.classpath文件中不會有「classpathentry」標籤。

之後,我會通過m2eclipse插件(Window-> Maven並選中「Download Artifact Sources」)打開源代碼下載。以這種方式使用源代碼不會添加任何.classpath文件條目。