2

使用 maven-compiler-plugin 可以为项目指定支持的 jdk:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>

                <fork>true</fork>
                <!-- <executable>path-to-javac</executable> -->
                <compilerVersion>1.5</compilerVersion>
            </configuration>
        </plugin>

但是,如果使用另一个版本的 JDK,是否有可能导致构建失败?

我有一些使用javax.xml.bind.annotation.adapters的代码,它不是 1.5 的一部分,但是由于我使用包含此包的 JDK6 构建,因此构建成功。

在 Eclipse 中,我收到警告,但如果不显式修改构建项目时使用的 JDK,使构建失败可能会很好。

我试过这个:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
      <execution>
        <id>enforce-versions</id>
        <goals>
          <goal>enforce</goal>
        </goals>
        <configuration>
          <rules>
            <requireJavaVersion>
              <version>1.5</version>
            </requireJavaVersion>
          </rules>
        </configuration>
      </execution>
    </executions>
  </plugin>

但它什么也没做。我也尝试过插件管理:

    <plugin>
      <groupId>org.eclipse.m2e</groupId>
      <artifactId>lifecycle-mapping</artifactId>
      <version>1.0.0</version>
      <configuration>
        <lifecycleMappingMetadata>
          <pluginExecutions>
            <pluginExecution>
              <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                  <goal>enforce</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <ignore></ignore>
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>

但也没有效果。

4

2 回答 2

1

maven-enforcer-plugin如果您更改<version/>标签,将会失败。

Maven 版本范围规范将告诉您如何指定版本范围。

<version>1.5</version>

将意味着version >= 1.5

你应该声明

<version>[1.5]</version>

这意味着version == 1.5如果您使用 1.6 版的 JDK,那么执行器将无法构建。

于 2012-10-02T06:47:00.850 回答
0

尝试使用

<properties>
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.test.skip>true</maven.test.skip>
</properties>
于 2014-09-29T15:14:39.140 回答