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