2012-03-06 131 views
2

在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不允许这种组合。

回答

1

我能够实现我想要这个:

<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> 
1

这是可能的,但您需要设置testCompile而不是compile的参数。您可以为编译时使用的testCompile指定不同的目标/源组合。

因此,对于编译,您的目标是1.4,而testCompile 1.5或1.6。

此外,要运行单元测试,可以使用jvm参数指定jvm在surefire中使用。这将指向1.6 jvm。

1

它已经一段时间,因为我已经做到了这一点,但你想要的插件依赖性是这样的:

<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> 

link to source