';RVM-like';Java工具

';RVM-like';Java工具,java,maven,ant,build,continuous-integration,Java,Maven,Ant,Build,Continuous Integration,我正在寻找一种工具,可以让我切换正在运行的Java实现,比如Ruby的RVM(或RBENV)。我知道Debian系统提供了替代机制,我可以手动将JAVA_设置为HOME 不过,如果可能的话,我想要更自动化的。如果它能够获取JDK,那就更好了,但这不是必需的 我已经找过了,但没有看到类似的东西。我猜Java生态系统已经习惯了在IDE中使用这种功能 编辑:改变路径和JAVA_主页似乎很好。它可以简单地自动化。我认为没有这样的工具。每个平台都有自己的系统。Debian/Ubuntu、RedHat/Ce

我正在寻找一种工具,可以让我切换正在运行的Java实现,比如Ruby的RVM(或RBENV)。我知道Debian系统提供了替代机制,我可以手动将JAVA_设置为HOME

不过,如果可能的话,我想要更自动化的。如果它能够获取JDK,那就更好了,但这不是必需的

我已经找过了,但没有看到类似的东西。我猜Java生态系统已经习惯了在IDE中使用这种功能


编辑:改变路径和JAVA_主页似乎很好。它可以简单地自动化。

我认为没有这样的工具。每个平台都有自己的系统。Debian/Ubuntu、RedHat/CentOS和SLE/OpenSUSE(可能还有其他一些发行版)使用了替代机制。MacOSX有自己的内置切换机制来更改当前使用的JVM

我必须维护很多开发者工作站和服务器。All*nix基于(OSX、Linux、Solaris),用于在目录中安装所有JVM,并创建到应使用版本的当前符号链接。指向此当前符号链接的JAVA_HOME和PATH变量。如果Ia希望使用另一个版本,则仅haf可移动当前符号链接。无需采取进一步行动

不幸的是,这种方法不适用于基于Windows的系统。

基于Ruby的RVM的

您必须通过一些手动步骤来添加新的Java版本†,但一旦它们进入,您可以使用
jenv use Java$version
在它们之间切换。它还负责针对特定Java版本安装Java应用程序

还有一个工具我还没有用过,名字也很混乱,但它是基于Ruby的rbenv的


†添加Java版本的麻烦似乎是由于Oracle,可能是许可问题,并且似乎适用于这两种工具。

对于那些在2016年寻找此类工具的人+-请尝试。它是在nvm/gvm/rvm之后设计的(实际上CLI与nvm的CLI几乎相同)


充分披露:我是项目的维护者。

SDKman是一条路要走:

The Software Development Kit Manager

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates. Formerly known as GVM the Groovy enVironment Manager, it was inspired by the very useful RVM and rbenv tools, used at large by the Ruby community. 

特别提到RVM,与RVM一样,通过
curl
安装:

现在就开始

继续,粘贴并在终端中运行以下操作:


尽管各种系统供应商都在努力使其变得更加复杂,但事实是,您可以安装任意数量的JDK,每个JDK都安装在自己的目录中,然后调整路径——就是这样。您已经用Maven和Ant标记了这个问题,您愿意为构建这样做吗?还是仅仅在跑步的时候?也许与此无关,但如果您有Java 1.7,您总是可以编译与1.4、1.5、1.6等兼容的二进制文件。我知道Jenkins确实按版本隔离JDK,您可以在作业级别指定一个。@Kal动机是自动化测试。例如,在几个JDK上编译/运行测试套件。例如,甚至可能混合使用OpenJDK和Oracle的JDK来确保兼容性。@ErnestFriedman Hill,谢谢。我会尝试一下,然后再报告。使用哪种JDK只是与环境变量有关。也许可以为不同的平台编写脚本来改变变量。对于*nix,脚本只需获取jdk版本的一个参数,并自动删除旧的符号链接并创建新的符号链接;对于Windows,可能一个批处理文件可以修改JAVA_HOME之类的变量,只要它不被UAC阻止……我将运行更改JAVA_HOME和PATH的实验。这可能足够了。
The Software Development Kit Manager

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates. Formerly known as GVM the Groovy enVironment Manager, it was inspired by the very useful RVM and rbenv tools, used at large by the Ruby community. 
$ curl -s "https://get.sdkman.io" | bash