我正在使用父pom,它将java版本设置为1.5。在我的具体项目中,我使用1.6,所以每次进行Maven更新时,我都会在eclipse中更改编译器版本。
寻找解决方案,我发现了一些解决方案,涉及覆盖父pom中父pom的行为。
我的问题是它们之间是否存在差异,如果存在差异,我应该使用哪个选项。我找到的选项(可能还有更多)是:
- 在属性标记中:
<app.java.version>1.6</app.java.version>
- 在属性标记中:
<jdk.version>1.6</jdk.version>
- 在配置标记中:
<source>${jdk.version}</source>
我对Maven很新。提前谢谢。
答案 0 :(得分:6)
你绝对想要:
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
用于设置Java版本的事实上的标准Maven属性不仅由maven-compiler-plugin
使用,而且还由其他标准Maven插件(包括报告插件)使用,因此适用您的Java版本全局,不仅用于编译类。
答案 1 :(得分: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>
答案 2 :(得分:0)
如果您的父pom使用1.7 jdk并且您希望子pom使用1.6 java版本。 combine.self =“override”非常重要,请使用以下代码:
<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>