Вступление
Как правило, проект имеет минимальное требование к версии Java, и это относится ко всем его модулям. Но у каждого правила есть свои исключения, так как недавно я наткнулся на следующую проблему.
Один мой проект с открытым исходным кодом требует Java 1.6 для большинства своих модулей, кроме одного, требующего версию 1.7.
Это происходит при интеграции внешних библиотек с требованиями Java, отличными от вашего собственного проекта.
Поскольку этот один модуль интегрирует среду DBCP2 (поддерживающую, по крайней мере, Java 1.7), мне нужно дать Maven команду использовать два разных компилятора Java.
Переменные среды
Нам нужно определить следующие переменные среды
Имя переменной среды | Значение переменной среды |
---|---|
JAVA_HOME_6 | C: \ Program Files \ Java \ jdk1.6.0_38 |
JAVA_HOME_7 | C: \ Program Files \ Java \ jdk1.7.0_25 |
JAVA_HOME | % JAVA_HOME_6% |
Родитель pom.xml
Родительский pom.xml определяет глобальные настройки версии Java
1
2
3
4
|
< properties > < jdk.version >6</ jdk.version > < jdk >${env.JAVA_HOME_6}</ jdk > </ properties > |
Нам нужно указать компилятору и тестовым плагинам использовать настроенную версию Java.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
< build > < plugins > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-compiler-plugin</ artifactId > < configuration > < source >${jdk.version}</ source > < target >${jdk.version}</ target > < showDeprecation >true</ showDeprecation > < showWarnings >true</ showWarnings > < executable >${jdk}/bin/javac</ executable > < fork >true</ fork > </ configuration > </ plugin > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-surefire-plugin</ artifactId > < configuration > < jvm >${jdk}/bin/java</ jvm > < forkMode >once</ forkMode > </ configuration > </ plugin > </ plugins > </ build > |
Конкретный модуль pom.xml
Те модули, которым требуется другая версия Java, просто должны переопределить настройки по умолчанию:
1
2
3
4
|
< properties > < jdk.version >7</ jdk.version > < jdk >${env.JAVA_HOME_7}</ jdk > </ properties > |
И это все, теперь мы можем создавать каждый модуль, используя свое собственное требование минимальной версии Java.
Ссылка: | Модули Maven и Java от нашего партнера JCG Влада Михалча в блоге Влада Михалча . |