如何将Maven默认配置为使用JDK6,而根据需要配置JDK7

ata*_*ulm 7 maven maven-compiler-plugin

我的系统上安装了JDK 1.6和1.7(Linux,在/ opt目录下).我在我的路径中添加了JDK 1.6的bin目录,因此这是默认情况下使用的Java版本.

我正在开发一个需要JDK 1.7的项目和一些需要1.6的项目.以前我在Eclipse中设置了JDK 1.7设置,但是我想将这个项目转换为Maven,这样每个人都可以使用他们喜欢的编辑器.

是否可以在Maven安装/配置(而不是POM文件)中指定1.7位置,以便默认情况下使用1.6,而在POM中指定项目时需要1.7?据我所知,每个从事项目的人都应该在他们的POM文件中有相同的内容,所以我不愿意在这里设置Java 7目录的位置(因为它在每个人的机器上都会有所不同).

$ mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 13:51:28+0000)
Maven home: /opt/apache-maven-3.0.5
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: /opt/jdk1.6.0_45/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-27-generic", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
            <configuration>
                <outputDirectory>${project.build.outputDirectory}/resources</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

结果是:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project golemlite: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

And*_*nek 4

看看这里。您可以在 settings.xml 中设置属性并在 pom.xml 中使用它。请注意,每个人都必须定义该属性。

至于你的例子:

<build>
<plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <fork>true</fork>
        <executable>${JAVA_1_7_HOME}/bin/javac</executable>
    </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
        <configuration>
            <outputDirectory>${project.build.outputDirectory}/resources</outputDirectory>
        </configuration>
    </plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

并在设置中:

<settings>
  [...]
  <profiles>
    [...]
    <profile>
      <id>compiler</id>
        <properties>
          <JAVA_1_7_HOME>/path/to/jdk7</JAVA_1_7_HOME>
        </properties>
    </profile>
  </profiles>
  [...]
  <activeProfiles>
    <activeProfile>compiler</activeProfile>
  </activeProfiles>
</settings>
Run Code Online (Sandbox Code Playgroud)