Maven项目,模块设计为在不同的JDK上运行

时间:2015-12-14 14:05:19

标签: java maven

我有一个项目,其中一个主模块使用pom打包和几个定义为使用jar打包的子模块。我想让其中一些准备好在JDK7上运行,而另一些则在JDK8上运行(并最终将JDK7中的那些作为JDK8中的依赖项嵌入)。

目标是将子模块作为独立的jar释放(例如在Maven Central上)

这种做法是否正确?有什么缺点吗?

2 个答案:

答案 0 :(得分:4)

您可以使用工具链插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-toolchains-plugin</artifactId>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>toolchain</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <toolchains>
                    <jdk>
                        <version>${java.min.version}</version>
                        <vendor>oracle</vendor>
                    </jdk>
                </toolchains>
            </configuration>
        </plugin>

您需要一个工具链文件来配置您要使用的工具链:https://maven.apache.org/plugins/maven-toolchains-plugin/toolchains/jdk.html

您还需要在编译器插件等中指定java版本。

答案 1 :(得分:1)

绝对不会反对这样做。但是,如果您的模块需要使用Java 8进行编译,则需要确保Maven也是使用Java 8启动的。

然后,您需要覆盖每个模块的maven-compiler-plugin配置,并定义正确的Java版本(<source><target>属性)。

之后,您可以毫无问题地在Java 8项目中使用Java 7依赖项。