为什么Red Hat提供使用不同Java编译器版本编译的构建版本?

时间:2017-12-14 23:50:44

标签: java maven

为什么Red Hat提供使用不同Java编译器版本编译的相同源代码的构建?

特别是hibernate-jpa-2.1-api: https://maven.repository.redhat.com/ga/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/

如果这里有价值,为什么不同的编译器版本在Maven Central中没有相同源代码的构建?

Maven Central只有1个最终版本: http://central.maven.org/maven2/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/

2 个答案:

答案 0 :(得分:1)

据我所知,它是RedHat支持模型。

  • Maven Central - 是上游的OpenSource版本,而

  • RedHat支持RedHat版本。

正如您所看到的,RedHat的版本为“1.0.0.Final-redhat-2”,因此如果使用此版本,谁支付支持将从RedHat获得,但RedHat不支持上游OpenSource版本。

答案 1 :(得分:1)

这两个问题的真正答案是......问管理这些事情的人。真正的原因可能包括务实/商业原因。

首先,使用较旧的Java工具链构建JAR文件具有明显的优势。例如,由于classfile版本号,Java 7平台不会为Java 8或更高版本运行JAR构建,并且在某些情况下由于Java API依赖性。因此,Redhat正在做的事情对于那些需要构建以在旧版Java上运行的人来说是更好的...

另一方面...... Maven Central是一项社区活动。工件由开发人员自己(或有时由第三方)构建和发布;见https://maven.apache.org/guides/mini/guide-central-repository-upload.html

  • 许多开发人员对支持旧Java平台毫无兴趣。
  • 一些开发人员认为支持旧的Java平台是一个坏主意。在旧的不受支持的Java版本(版本7及更早版本)上运行代码对安全性有害,除非您采取措施来缓解此问题。

此外,Maven POM文件或Maven Central都没有很好的方法来标记Java版本兼容性或通过Java构建平台识别工件。 (如果我错了,请纠正我......)

在一个理想的世界里,“某人”会为此做点什么。在实践中......请参阅上面的要点。