2013-02-11 16 views
4

我開始注意到我的.classpath文件這些屬性運行Maven -> Update Project...工具與Update project configuration from pom.xml選項勾選後:爲什麼M2E Eclipse插件插入可選屬性src和它有什麼作用

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" output="target/classes" path="src"> 
     <attributes> 
      <attribute name="optional" value="true"/> 
      <attribute name="maven.pomderived" value="true"/> 
     </attributes> 
    </classpathentry> 
    ... 
</classpathentry> 

所有支持我的屬性提高我的眉毛最多的是:<attribute name="optional" value="true"/>

它是做什麼的?它看起來很可疑,因爲我發現項目中的Java源文件沒有任何可選項。

+0

我不太瞭解eclipse的內部工作原理,但是您可以讓Maven項目沒有src文件夾(例如父項和聚合項目)。如果沒有'optional',上面的類路徑配置會破壞這些項目。 – Cephalopod 2013-02-11 11:06:30

+0

是的,但項目是java項目,它有一個源文件夾。沒有什麼可選的。 – 2013-02-11 12:09:12

+0

取決於您對「可選」的定義。沒有「src」,它仍然是一個有效的maven項目。並沒有在你指定該文件夾不是可選的(我懷疑);所以可能_you_需要該文件夾,但對於涉及的所有工具而言是可選的。 – Cephalopod 2013-02-11 12:24:36

回答

2

這是因爲src文件夾是maven的可選文件夾而添加的。如果缺少src,該項目不應該抱怨。 (實際上默認情況下,這應該是src/main/javasrc/test/java)。這意味着添加或刪除src作爲源文件不應該要求更新您的maven配置。

在你的情況下,這個屬性並不需要在那裏,但它很簡單,maven不關心源文件夾是否存在,只要所有東西都可以被編譯(所以Eclipse不應該在意)。

+0

This似乎有點多餘。如果我有源文件夾,這個特定項目顯然是需要的。如果我不這樣做,那麼這是不需要的。並不是說我覺得有必要在這方面與m2e/Maven爭論。它只是讓我覺得沒有必要,因爲我沒有看到這種屬性的用例。 – 2013-02-13 07:40:16

+0

無論您是否認爲這是多餘的,這是如何實施m2e。 :-)我猜測這個決定的原因是,如果你的項目最初*沒有*有一個src/main/java文件夾,並且有一個被添加了,這將被mae拿起並由m2e控制。 – 2013-02-13 17:49:57