我目前的任务是确保给定的Java项目在Java(JRE)上从版本6运行到版本9.有没有办法用Maven做到这一点?
我想配置maven-compilter-plugin是其中的一部分。应该是
<source>1.6</source>
确保没有使用更高版本的功能?那么<target>
呢?
Maven应该运行哪个Java版本? Java 9?
animal-sniffer-maven-plugin看起来也很有趣,但不确定它是如何适合的。这也很难,因为Java 6并不是最小的API,因为AFAIK它有一些Java 9没有的类(例如sun和com.sun包中的一些)。
还有什么?有没有人这样做过?
答案 0 :(得分:3)
关于此的一些注释(可能不是真正的答案):
首先,animal-sniffer-maven-plugin插件可以检查您的代码是否仅使用JDK 6(API)中的代码,这是您必须检查的最低部分(或其他JDK版本)。 此外,您需要检查项目是否具有jar的依赖性,其中包含字节代码不需要超过基于JDK 6的代码。
<target>/<source>
无法保证这样的事情。他们只确定生成的jar文件(类文件格式)至少可以与JRE 6一起使用,但不能确保它也可以在JRE 9上运行。
如果你需要在JRE 9上运行,你需要在项目中有一个module-info.java文件。
此外,您的项目使用com.sun.*
您有很多事情要做,因为我记得大部分或全部已被声明为已弃用/或com.sun.*
仅内部而非部分公共API(如果你将在带有JDK的Mac上运行那些类不存在)很长一段时间(参见here)。
你可以看一下Maven Core因为我们需要确保Maven也在JRE 9上运行......(我们使用JDK 9 EA Package来测试它)..我们使用{{3等等,以确保这是有效的。