2012-07-19 78 views
4

能否請你告訴我,是強制要求在我的POM指定下Maven的編譯器插件的詳細信息:Maven的編譯器插件2.0.2

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
      </configuration> 

如果是這樣,爲什麼,我明白它做什麼,但不知道爲什麼它的要求?沒有任何其他方式來調用maven中的javac?

+0

問題標題指示'2.0.2' - 這是您想要使用還是正在使用的版本?你在哪個版本的maven中? – Raghuram 2012-07-19 10:44:03

+1

maven版本是2.1.0,它的標題編譯插件 – hakish 2012-07-19 11:23:40

+1

答案如下。你應該看看使用更新版本的maven,以支持更新版本的編譯器插件 – Raghuram 2012-07-19 11:41:47

回答

7

你能告訴我被強制指定Maven的編譯器插件的詳細信息?

不會,但它會使用Java 1.3或石器時代的東西來編譯。

如果是這樣,我明白它的作用,但不知道爲什麼它需要?

答案是'不'。但這是原因。你當然不想在你的新代碼上使用Java 1.3進行編譯。您需要Java 5中的所有新功能。不是嗎? :)所以,你必須在已經混亂的POM中加入這些額外的行。

沒有任何其他方式來調用maven中的javac?

沒有。但是,即使您沒有此塊,mvn compile或任何其他命令也會起作用。但是如果你的源代碼在Java 5中有任何先進的東西,但在以前的版本中沒有,編譯將失敗。


編輯1

它是如何編譯爲1.3時,我有JDK 5?

那麼,有一個選項可以在Java編譯器中設置。請參閱此處的Java編譯器選項:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

它說您可以將source等設置爲舊版本。

+1

如果編譯器插件沒有明確定義,maven'3.0.4'使用'1.5'作爲源版本。 – Raghuram 2012-07-19 10:42:40

+0

@Raghuram是的,我想這是Maven社區的一個長期待決和非常期望的請求。不幸的是,當Java 6計算日期時,他們默認情況下會提供此功能。 :)人們現在希望在新項目上使用Java 6。 :) – Nishant 2012-07-19 11:21:36

+1

是的,你發現,代碼編譯與JDK 1.3,即使我有我的JAVA_HOME指向1.6。但不知道它爲什麼這樣做? – hakish 2012-07-19 11:22:50

4

maven-compiler-plugin部分是可選的。如果您不在pom.xml中包含該部分,則應用默認值。

默認編譯器是javac,用於編譯Java源代碼。 另請注意,目前默認的源設置爲1.5,而 的默認目標設置爲1.5,與運行Maven 時的JDK無關。

我個人的偏好是爲了下面的原因有一個明確的配置。

  1. 我不認爲依賴於外部的默認是個好主意,因爲 這些可能變化時,插件的版本改變。
  2. 這是不可能的,我想成爲編制了項目 的Java 1.5
+3

默認情況下,Mine正在編譯版本1.3。 – Crowie 2014-02-25 14:15:14

相關問題