Maven和Java多版本模块

介绍

通常,项目具有最低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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值