【问题标题】:Maven doesn't use Java 7Maven 不使用 Java 7
【发布时间】:2012-02-03 18:04:39
【问题描述】:

我想打包一个maven-(multi)module,父POM包括:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <source>${maven.compiler.source}</source>
    <target>${maven.compiler.target}</target>
    <encoding>${project.build.sourceEncoding}</encoding>
  </configuration>
</plugin>

我使用的是Java 1.7,属性指定如下:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
  <slf4j.version>1.6.1</slf4j.version>
</properties>

Maven 版本为 2.2.1:

johannes@luna:~/workspace/treetank/bundles/treetank-core$ mvn -version
Apache Maven 2.2.1 (rdebian-6)
Java version: 1.7.0
Java home: /usr/lib/jvm/jdk1.7.0/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "3.0.0-14-generic" arch: "amd64" Family: "unix"

我不知道为什么它不使用 Java 1.7 版。例如,当调用 mvn package 时,我收到错误消息(使用 -source 7 或更高版本来启用菱形运算符)。你知道它为什么尝试使用 1.6 吗?

有效的 POM 是:

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <executions>
      <execution>
        <id>default-testCompile</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </execution>
      <execution>
        <id>default-compile</id>
        <phase>compile</phase>
        <goals>
          <goal>compile</goal>
        </goals>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </execution>
    </executions>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
      <encoding>UTF-8</encoding>
    </configuration>
  </plugin>

【问题讨论】:

  • 在 RHEL5 上的一个简单的 maven 项目中为我工作。我在用 1.6 编译 1.7 源时得到的错误文本也不同 - diamond operator is not supported in -source 1.6

标签: java maven maven-2 java-7


【解决方案1】:

这在 maven 2.2.1 中可能不起作用,但在 Maven 3.0.4 中,只需将这两个属性添加到 pom 的属性中即可为我启用 Java 7:

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

【讨论】:

  • 我的项目编译正常,但不知何故,一个 src 文件夹被添加到 pom.xml 中,仅为该特定文件夹明确地将这两个属性设置为 1.6,这使得追踪变得更加困难。跨度>
  • 似乎人们说它不起作用,所以我尝试了新的 w/maven 3.3.9:生成项目:mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.example -DartifactId=maven-sample 然后在 AppTest.java 中添加 List&lt;String&gt; list = new ArrayList&lt;&gt;(); 并验证 mvn test 上的源错误.将属性添加到 pom.xml。修复了mvn test。生成的eclipse项目:mvn eclipse:eclipse来自eclipse 4.4.1:文件->导入->现有项目。然后我就可以从 Eclipse 运行单元测试 =) 似乎最好问一个新问题,说明你在做什么不起作用?
【解决方案2】:

Mark Peters 对 jdk 1.7 与 maven 2.2.1 的兼容性问题的完美解释 Maven "could not parse error message" (Java 7 + Maven 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 2011-10-20
    • 2016-03-15
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2014-12-23
    相关资源
    最近更新 更多