我正站在我的第一个开放源码Java库(GitHub/Maven)的过程中,开源硬件社区将公平/适度地使用它。
我正在用Java 8编写这个库,并使用Gradle 2.4管理它的构建。今年晚些时候,Java 9将发布,我想积极维护库的不同版本(每个JVM版本一个),原因如下:
我很纠结于把这些分级子项目放在同一个回购项目下,还是把它们放在自己的顶级项目中。所以:
myawesomelib顶级项目,其下面有java8/和java9/子项目;或myawesomelib-java8和myawesomelib-java9顶级项目;或为了CI目的,我倾向于使用两个单独的顶级项目(因此提交给一个不触发另一个构建),但我以前从未处理过这个问题。
因此,所有这些都要问:在OSS库中管理多个JVM版本支持的一些常见技术是什么,以及它们在Gradle中是否有任何可以帮助实现这些技术的工具?
发布于 2016-04-07 16:37:31
与当前的Java-8版本相比,Java-9带来了哪些好处?
我指的是使用你图书馆的人。
部署同一个库的两个并发版本有很多缺点。您需要在两者之间保持API兼容吗?您还必须维护代码两次,修复bug两次,因为不可避免的是,代码会承受一些不同。如果没有,那么只需在V8中发布它,请放心,它将在V9下正常工作。
通常,当创建一个比您自己的项目更大的使用库时,往往非常保守,并且支持尽可能低的Java版本。你需要关闭吗?你用NIO吗?没有吗?也许最好还是坚持使用v6,并接触到更广泛的受众。
我个人对此的看法是,尝试并拥有一个代码库,该代码库在JDK的最低版本下发布,该版本仍然有效,并将其保留在这个版本上。使用Java 6在Java 8下构建的库可以很好地工作,当Java 9出现时,它仍然可以正常工作。
如果您的库不能在项目之外使用,那么您可以使用项目使用的任何版本的JDK,同样,不要维护两个单独的版本--这是工作的两倍,却没有什么好处。
现在,如果您必须支持多个版本,我建议以这种方式对这两个版本进行分支并对它们进行维护,这很适合普通的VCS工具(git、svn等)。不需要维护支持多个编译环境或在构建脚本中运行以查看何时编译什么的古怪项目布局。不过,对我来说,好处必须是相当可观的。
https://softwareengineering.stackexchange.com/questions/314781
复制相似问题