Maven 项目的模块设计为 运行 在不同的 JDK
Maven project with modules designed to run on different JDK
我有一个项目,其中一个主模块使用 pom
打包,几个子模块定义为使用 jar
打包。我想让它们中的一些准备好在 JDK7 上 运行,其他的在 JDK8 上准备好(并最终将 JDK7 的那些作为依赖项嵌入到 JDK8 对应项中)。
目标是将子模块作为独立的 jar 发布(例如在 Maven Central 上)
这种做法正确吗?有什么缺点吗?
绝对没有人反对这样做。但是,如果您有一个需要使用 Java 8 编译的模块,您需要确保 Maven 也使用 Java 8.
启动
然后,您需要为每个模块覆盖 maven-compiler-plugin
的配置并定义正确的 Java 版本(<source>
和 <target>
属性)。
之后,您可以在 Java 8 项目中使用 Java 7 依赖项而不会出现任何问题。
您可以使用工具链插件:
<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版本
我有一个项目,其中一个主模块使用 pom
打包,几个子模块定义为使用 jar
打包。我想让它们中的一些准备好在 JDK7 上 运行,其他的在 JDK8 上准备好(并最终将 JDK7 的那些作为依赖项嵌入到 JDK8 对应项中)。
目标是将子模块作为独立的 jar 发布(例如在 Maven Central 上)
这种做法正确吗?有什么缺点吗?
绝对没有人反对这样做。但是,如果您有一个需要使用 Java 8 编译的模块,您需要确保 Maven 也使用 Java 8.
启动然后,您需要为每个模块覆盖 maven-compiler-plugin
的配置并定义正确的 Java 版本(<source>
和 <target>
属性)。
之后,您可以在 Java 8 项目中使用 Java 7 依赖项而不会出现任何问题。
您可以使用工具链插件:
<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版本