介绍
通常,项目具有最低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定义了全局Java版本设置
<properties>
<jdk.version>6</jdk.version>
<jdk>${env.JAVA_HOME_6}</jdk>
</properties>
我们需要指示编译器和测试插件使用配置的Java版本。
<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>
特定模块
这些模块需要不同的Java版本,只需要覆盖默认设置即可:
<properties>
<jdk.version>7</jdk.version>
<jdk>${env.JAVA_HOME_7}</jdk>
</properties>
就是这样,我们现在可以使用其特定的最低Java版本要求构建每个模块。
翻译自: https://www.javacodegeeks.com/2014/04/maven-and-java-multi-version-modules.html