Maven和Java多版本模块

from–https://blog.csdn.net/dnc8371/article/details/106704679

介绍

通常,项目具有最低Java版本要求,并且适用于其所有模块。 但是每条规则都有其例外,最近我偶然发现了以下问题。

我的一个开源项目对大多数模块要求使用Java 1.6,除了一个要求1.7版本的项目。

当集成具有与您自己的项目不同的Java要求的外部库时,会发生这种情况。

因为该模块集成了DBCP2框架(至少支持Java 1.7),所以我需要指示Maven使用两个不同的Java编译器。

环境变量

我们需要定义以下环境变量

环境变量名称环境变量值
JAVA_HOME_6C:\ Program Files \ Java \ jdk1.6.0_38
JAVA_HOME_7C:\ Program Files \ Java \ jdk1.7.0_25
JAVA_HOME%JAVA_HOME_6%

pom.xml定义了全局Java版本设置

  1. <properties>
  2. <jdk.version>6</jdk.version>
  3. <jdk>${env.JAVA_HOME_6}</jdk>
  4. </properties>

我们需要指示编译器和测试插件使用配置的Java版本。

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-compiler-plugin</artifactId>
  6. <configuration>
  7. <source>${jdk.version}</source>
  8. <target>${jdk.version}</target>
  9. <showDeprecation>true</showDeprecation>
  10. <showWarnings>true</showWarnings>
  11. <executable>${jdk}/bin/javac</executable>
  12. <fork>true</fork>
  13. </configuration>
  14. </plugin>
  15. <plugin>
  16. <groupId>org.apache.maven.plugins</groupId>
  17. <artifactId>maven-surefire-plugin</artifactId>
  18. <configuration>
  19. <jvm>${jdk}/bin/java</jvm>
  20. <forkMode>once</forkMode>
  21. </configuration>
  22. </plugin>
  23. </plugins>
  24. </build>

特定模块

这些模块需要不同的Java版本,只需要覆盖默认设置即可:

  1. <properties>
  2. <jdk.version>7</jdk.version>
  3. <jdk>${env.JAVA_HOME_7}</jdk>
  4. </properties>

就是这样,我们现在可以使用其特定的最低Java版本要求构建每个模块。

上一篇
下一篇