2013-08-04 2 views
1

Я работаю с некоторым сторонним кодом, который имеет зависимости от классов в пакете com.sun.javadoc.*. Эта и некоторые другие зависимости означают, что код будет строиться только с Sun/Oracle JDK, а не OpenJDK.как обеспечить применение конкретного поставщика JDK в качестве предпосылки сборки?

У меня нет возможности удалить зависимости, поэтому мне хотелось бы, чтобы сборка была неудачной на ранней стадии и с легко понятным сообщением об ошибке, если кто-то пытается построить с помощью JDK, который не поддерживается.

Есть ли способ заставить JDK Vendor и JDK Version быть Oracle 1.6 JDK в файле pom?


EDIT:

Благодаря 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

Вы знаете, что 1.6 достигли конца, если жизнь? Из-за этого может потребоваться единичный тест. – Michael

ответ

1

Я предлагаю вам использовать maven-enforcer-plugin и написать свое собственное правило.

+0

Спасибо за ссылку - только что просмотрели некоторые рекомендации в нижней части [страницы] (http://maven.apache.org/enforcer/enforcer-rules/requireJavaVersion.html), которая рекомендует использовать регулярное выражение: «Если бы вы например, для принудительной реализации определенной строки поставщика для JDK, вы должны использовать правило RequireProperty и проверить свойство java.vendor с регулярным выражением ». - Я отдам это, потому что кажется, что это может быть немного проще, чем обычное правило! –

+0

Полезно знать! :) – carlspring

Смежные вопросы