在Maven中,我有一个代码库,我想构建需要针对1.4 JVM的代码库。这在pom中很容易实现,但我遇到了一个问题:此代码库的测试使用1.5+构造。Maven:针对Java 1.4构建代码,但针对Java 1.5构建测试代码
是否有可能让Maven在1.6 JVM中编译/运行测试,但是将主代码库构建为目标1.4?
将源设置为1.6,目标设置为1.4不起作用。 Maven/Java不允许这种组合。
在Maven中,我有一个代码库,我想构建需要针对1.4 JVM的代码库。这在pom中很容易实现,但我遇到了一个问题:此代码库的测试使用1.5+构造。Maven:针对Java 1.4构建代码,但针对Java 1.5构建测试代码
是否有可能让Maven在1.6 JVM中编译/运行测试,但是将主代码库构建为目标1.4?
将源设置为1.6,目标设置为1.4不起作用。 Maven/Java不允许这种组合。
我能够实现我想要这个:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<testSource>1.6</testSource>
<testTarget>1.6</testTarget>
<target>1.4</target>
<source>1.4</source>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
这是可能的,但您需要设置testCompile而不是compile的参数。您可以为编译时使用的testCompile指定不同的目标/源组合。
因此,对于编译,您的目标是1.4,而testCompile 1.5或1.6。
此外,要运行单元测试,可以使用jvm参数指定jvm在surefire中使用。这将指向1.6 jvm。
它已经一段时间,因为我已经做到了这一点,但你想要的插件依赖性是这样的:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<configuration>
<source>1.3</source>
<target>1.3</target>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</execution>
</executions>
</plugin>