2012-03-06 128 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