我的應用程序在Java 1.6u45和Java 1.8的用戶之間分開。我們的問題是我們不能指定項目系統庫,並且同時爲代碼提供兩種不同的編譯器設置。Maven使用不同的JDK版本編譯
項目結構:
Project >
> src/main/java/com/us/javafx/... (Java 8 code)
> src/main/java/com/us/... (Java 6 code)
> src/main/resources/...
我們的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.us</groupId>
<artifactId>PROJECT</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>PROJECT</name>
<description>DESCR</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
</dependencies>
<build>
<plugins>
<!-- Copy all dependencies to jars directory -->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jars</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- Maven Compiler -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<!-- Necessary to avoid setting JRE on Maven project update! -->
<!-- SEE PHOTO FOR WHY THIS IS HERE -->
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<!-- Compile Java 6 directory -->
<execution>
<id>java6</id>
<configuration>
<excludes>
<exclude>com/us/javafx/**/*</exclude>
</excludes>
<!-- Non working attempt to set compiler version -->
<source>1.6</source>
<target>1.6</target>
</configuration>
</execution>
<!-- Compile Java 8 directory -->
<execution>
<id>java8</id>
<configuration>
<includes>
<include>com/us/javafx/**/*</include>
</includes>
<!-- Non working attempt to set compiler version -->
<source>1.8</source>
<target>1.8</target>
</configuration>
</execution>
</executions>
</plugin>
<!-- Create JAR in jars folder -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<outputDirectory>${project.build.directory}/jars</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
如果我們告訴Maven的編譯器插件使用Java 1.8,Java 1.6的用戶得到了不支持的主要和次要版本錯誤。或者我們告訴Maven的編譯器插件使用Java 1.6,但我們的Java 8代碼會抱怨錯誤表演時右鍵點擊項目>的Maven>更新項目...(這會導致下面的屏幕截圖):
有沒有一種方法可以達到既:
1)編譯Java 6和8的代碼與各自的編譯器
2)選擇Java 8我們項目的JRE系統庫
您只能從它製作兩個單獨的Maven項目,爲項目中的Maven編譯器進行相應的配置,並通過父項(這稱爲多模塊構建)進行組合。除此之外,任何IDE都無法正常工作..只有分開的項目才能工作。 – khmarbaise
您可以嘗試使用配置文件並運行構建兩次,每個配置文件一次。也許不是最優雅的。像Go這樣的現代CI應該允許您在假設有足夠節點的情況下並行運行構建。 – Gavin
我很感激幫助! 現在我只是將JVM中的說法,當我做生產版本: MVN清潔套裝-Dmaven.compiler.source = 1.6 -Dmaven.compiler.target = 1.6 和保持我的pom.xml在配置適合我的IDE –