指定每个maven子模块的jdk - 如果使用了错误则构建失败

时间:2012-10-01 22:27:15

标签: maven java

使用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>

但也没有效果。

2 个答案:

答案 0 :(得分:1)

如果您更改maven-enforcer-plugin代码,<version/>将失败。

Maven Version Range Specification将告诉您如何指定版本范围。

<version>1.5</version>

意味着version >= 1.5

您应该声明

<version>[1.5]</version>

这将意味着version == 1.5,如果您使用版本为1.6的JDK,则实施者将无法进行构建。

答案 1 :(得分: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>