我有一个大型的maven项目分为一些模块。
我决定用maven提供pmd(代码质量检查)模块。
当我尝试使用命令
测试pmd模块时mvn pmd:pmd
我收到以下类型的警告:
看起来maven出于某种原因使用jdk 1.4编译项目。
java -version
输出:
java version "1.7.0_05"
OpenJDK Runtime Environment (IcedTea7 2.2.1) (Gentoo build 1.7.0_05-b21)
OpenJDK 64-Bit Server VM (build 23.0-b21, mixed mode)
我使用的是gentoo linux。
Linux ufk-work 3.5.2-gentoo #1 SMP Sun Aug 19 18:58:32 IDT 2012 x86_64 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz GenuineIntel GNU/Linux
mvn -version
输出:
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: /usr/share/maven-bin-3.0
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /usr/lib64/icedtea7/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.5.2-gentoo", arch: "amd64", family: "unix"
所以任何想法如何确保maven将编译为jdk 1.7而不是1.4?
我用Google搜索并找到了maven-compiler-plugin的用法示例,如以下网址所示:http://twit88.com/blog/2008/03/09/maven-compile-your-application-to-be-14-15-or-16-compatible/
不幸的是,结果完全一样。非常感谢有关该问题的任何信息。
非常感谢你!
幼狮
我尝试将maven-compiler-plugin和maven-pmd-plugin添加到我的主pom.xml中 但结果完全一样。
更新的pom.xml可以在http://bpaste.net/show/41166/
查看答案 0 :(得分:7)
您需要告诉PMD的目标版本:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<targetJdk>1.7</targetJdk>
<rulesets>
<ruleset>tools/pmd-rules.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
</plugin>
</plugins>
</reporting>
注意:几个月前不支持1.7 JDK,你应该在文档中仔细检查它,否则你将无法使用菱形语法。
答案 1 :(得分:1)
在pom.xml
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>