我有一个项目,其中一个主模块使用pom
打包和几个定义为使用jar
打包的子模块。我想让其中一些准备好在JDK7上运行,而另一些则在JDK8上运行(并最终将JDK7中的那些作为JDK8中的依赖项嵌入)。
目标是将子模块作为独立的jar释放(例如在Maven Central上)
这种做法是否正确?有什么缺点吗?
答案 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依赖项。