2015-06-18 55 views
2

我正在使用建立java版本爲1.5的父pom。在我的具體項目中,我使用1.6,所以我每次更新Maven Update時都會更改eclipse中的編譯器版本。覆蓋父pom中指定的java版本的不同方法

尋找一個解決方案,我發現一些解決方案涉及覆蓋父POM的行爲在子節點。

我的問題是如果他們之間有任何差異,如果是這樣,我應該使用哪個選項。我發現的選項(也許還有更多):

  • 在性能標籤:<app.java.version>1.6</app.java.version>
  • 在性能標籤:<jdk.version>1.6</jdk.version>
  • 在配置標籤:<source>${jdk.version}</source>

我對Maven來說很新。提前致謝。

+0

你應該問的問題是:http://stackoverflow.com/questions/16723533 –

回答

4

屬性只是屬性,除非您在某處使用它們,這並不意味着太多。
重要的是,你設置在maven-compiler-plugin配置版本:

<properties> 
    <jdk.version>1.6</jdk.version> 
</properties> 

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>${jdk.version}</source> 
      <target>${jdk.version}</target> 
     </configuration> 
    </plugin> 
</plugins> 
+1

沒錯。你的名字你的財產並不重要。他們就像變數一樣。一旦聲明瞭代表您的JDK版本的屬性,例如'myJdkVersionPropertyName',你可以用'maven-compiler-plugin'中的''''標記來引用它, '$ {myJdkVersionPropertyName}'。這個標籤的'source'和'target'元素是實際設置JDK版本的元素。 –

+0

你們都是對的。我不明白「財產」的含義。我的父pom將定義爲1.5,因此覆蓋此屬性上的值就成了訣竅。謝謝!! –

+0

我對Maven並不熟悉,但是我在Maven管理的項目上。這個內容將放在哪裏?文件/文件夾位置的名稱,我沒有在pom.xml中看到。 – Elijah

5

你一定要一起去:

<properties> 
    <maven.compiler.source>1.6</maven.compiler.source> 
    <maven.compiler.target>1.6</maven.compiler.target> 
</properties> 

這是事實上標準的Maven屬性設置Java版本,它不僅被maven-compiler-plugin使用,而且被其他標準Maven插件(包括報告的插件)使用,所以這在全球範圍內適用於您的Java版本,不僅用於編譯類。

0

如果您的父pom使用1.7 jdk並且您希望子pom使用1.6 java版本。 combine.self =「覆蓋」是下面的代碼重要的用途:

<build> 
    <pluginManagement> 
    <plugins>   
     <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration combine.self="override"> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable>/usr/lib/jvm/java-1.6.0-openjdk-amd64/bin/javac</executable> 
     <compilerVersion>1.6</compilerVersion> 
    </configuration> 
    </plugin> 
    </plugins> 
</pluginManagement> 
</build> 
+1

gosh ...在我的屏幕上,gom看起來非常像色情片,我正要標記出來...所以... – user3743222