Первоначально я думал, что установки source / target на 1,7 для maven-compiler-plugin
будет достаточно, чтобы компиляция не прошла, но если у вас установлен JDK 8, компиляция завершится успешно (странно!).
Что вам действительно нужно, так это maven-enforcer-plugin
. См. Конфигурацию ниже, я запустил ее на фазе validate
, которая находится непосредственно перед compile
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>default-cli</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.7,1.8)</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Вывод:
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (default-cli) @ compiler-demo ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 1.8.0-152 is not in the allowed range [1.7,1.8).
Вы даже можете установить настраиваемое сообщение, чтобы прояснить ситуацию для ваших коллег, например
<rules>
<requireJavaVersion>
<version>[1.7,1.8)</version>
<message>Project requires JDK 7</message>
</requireJavaVersion>
</rules>
Вывод:
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (default-cli) @ compiler-demo ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Project requires JDK 7
Просто ради изучения возможностей плагина я попытался проверить, поддерживает ли он несколько диапазоны версий. Он работает (работает с JDK 11, чтобы попробовать):
<requireJavaVersion>
<version>[1.7,1.8),[9,10)</version>
</requireJavaVersion>
Вывод:
[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (default-cli) @ compiler-demo ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 11.0.1 is not in the allowed range [1.7,1.8),[9,10).