Maven:构建针对Java 1.4的代码,但是针对Java 1.5构建测试代码

时间:2012-03-06 23:01:25

标签: java maven

在Maven中,我有一个我想要构建的代码库,需要针对1.4 JVM。这在pom中很容易做到,但我有一个问题:这个代码库的测试使用1.5+构造。

是否有可能让Maven在1.6 JVM中编译/运行测试,但是将主代码库构建为目标1.4?

将源设置为1.6并将目标设置为1.4不起作用。 Maven / Java不允许这种组合。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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

答案 2 :(得分: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>