如何强制执行特定的JDK供应商作为构建的先决条件?

时间:2013-08-04 17:39:30

标签: maven-3

我正在处理一些依赖于com.sun.javadoc.*包中的类的第三方代码。这个和其他一些依赖项意味着代码只能用 Sun / Oracle JDK 构建,而不是 OpenJDK

我没有删除依赖项的选项,因此如果有人尝试使用不受支持的JDK构建,我希望构建尽早失败,并且容易理解错误消息。

有没有办法在pom文件中强制使用JDK Vendor和JDK Version作为Oracle 1.6 JDK?


修改

感谢carlspring's answer,我设法让这个工作。它没有在所有供应商和VM版本中进行全面测试,但它是一个开始。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
      <execution>
        <id>enforce-property</id>
        <goals>
          <goal>enforce</goal>
        </goals>
        <configuration>
          <rules>
            <requireProperty>
              <property>java.vendor</property>
              <message>Java Vendor must be Sun/Oracle.</message>
              <regex>Sun Microsystems Inc\.</regex>
              <regexMessage>Java Vendor must be Sun/Oracle.</regexMessage>
            </requireProperty>
            <requireProperty>
              <property>java.runtime.name</property>
              <message>Java Vendor must be Sun/Oracle.</message>
              <regex>Java\(TM\) SE Runtime Environment</regex>
              <regexMessage>Java Vendor must be Sun/Oracle.</regexMessage>
            </requireProperty>
          </rules>
          <fail>true</fail>
        </configuration>
      </execution>
    </executions>
  </plugin>

1 个答案:

答案 0 :(得分:3)

我建议您使用maven-enforcer-plugin并编写自己的自定义规则。