maven在运行java 1.7时以jdk 1.4模式编译java项目?

ufk*_*ufk 4 java pmd maven

我有一个大型的maven项目分为一些模块.

我决定用maven给pmd(代码质量检查)模块.

当我尝试使用命令测试pmd模块时

mvn pmd:pmd
Run Code Online (Sandbox Code Playgroud)

我收到以下类型的警告:

  • 除非在JDK 1.5模式下运行,否则不能使用泛型!
  • 在JDK 1.4模式下运行时无法使用注释!
  • 不能将enum用作JDK 1.5之前的目标中的关键字

看起来像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)
Run Code Online (Sandbox Code Playgroud)

我用的是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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

所以任何想法如何确保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或-16兼容/

不幸的是结果完全一样.

任何有关该问题的信息将不胜感激.

非常感谢!

幼狮

更新

我尝试将maven-compiler-plugin和maven-pmd-plugin添加到我的主pom.xml中,但结果完全相同.

更新的pom.xml可以在http://bpaste.net/show/41166/查看

pou*_*sma 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>
Run Code Online (Sandbox Code Playgroud)

注意:几个月前不支持1.7 JDK,您应该在文档中仔细检查它,否则您将无法使用菱形语法.