from–https://blog.csdn.net/dnc8371/article/details/106704679
介绍
通常,项目具有最低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版本要求构建每个模块。