繁体   English   中英

有没有类似 VirtualEnv for Java 的东西?

[英]Is there anything like VirtualEnv for Java?

有没有类似于 Java 或 JVM 语言的 Python virtualenv 的东西?

据我了解,virtualenv 使您能够拥有单独的库安装路径,有效地分离“虚拟”Python 安装。

Java 没有“系统范围安装”库(*) 的概念:它总是在类路径中搜索要加载的库。 由于可以(并且需要!)为每个应用程序定义类路径,因此每个应用程序都可以选择要加载的库和版本。

如果您更深入一层,并且有一个应用程序以某种方式同时需要同一个库的两个不同版本,那么您甚至可以使用一些类路径技巧来做到这一点。 它可能会变得复杂,但绝对有可能(OSGi 是支持此功能的一个示例,甚至具有两个独立 Web 应用程序的 Tomcat 也能做到这一点)。

我在 virtualenv 描述中看到了一些对安全性的引用:Java 内置了一个非常彻底的安全系统。在服务器应用程序中,它经常被关闭,因为这样配置更容易,但您可以轻松配置 Java 应用程序究竟是什么允许做。

(*) 几乎,有扩展或扩展库,但它们使用不多,甚至可以轻松从任意目录加载。

像 Ant、Maven 和 gradle 这样的构建工具是最接近pipeasy_install东西。

virtualenv 的概念是由类路径完成的。 因此,Java 并不真正需要 virtualenv

我知道这可能有点晚了,但是 Groovy/Java 有 gvm http://gvmtool.net/ ,它是 Ruby 的 renv 的 Groovy 版本。

我会恭敬地同意 Gautam K,luthur。 项目的依赖和包版本管理与维护不同项目的隔离独立虚拟环境不同。

我的 2 美分 -W

我对“Java 没有‘系统范围安装’库的概念”的断言感到困惑。 你会怎么称呼 $JAVA_HOME/jre/lib 和 $JAVA_HOME/jre/lib/ext 中的 jar 文件?

不管 Java 是否“需要”像 virtualenv 这样的工具,似乎可以让您在不同 Java 环境之间快速切换的东西(例如带有如此这般安全扩展的 Java 6、Java 7 等)会很方便- 即使它实际上在幕后所做的只是操作 PATH、JAVA_HOME 和 CLASSPATH 环境变量。

我也一直在寻找类似的解决方案来简化使用不同 Maven 版本/设置和/或 Java SDK 的项目之间的切换上下文,而不必每次都修改M2_HOMEJAVA_HOME设置。

为此,我开发了一个解决方案,可以根据每个项目的设置(存储在.mvn文件夹中)使用适当的配置帮助执行mvn命令。

见: https : //github.com/AlejandroRivera/maven-env

请注意,这仅在您使用 Maven 构建和/或运行您的项目时有用。

是的(参见http://www.jenv.be/ ),就像许多其他语言(Ruby、Python、Go、R、Php 等)一样。

Maven,您可以明确指定您将在 java 项目中使用哪些包

Java 作为一种语言不需要 virtualenv 的沙盒功能,但是像 Jython 这样的 JVM 语言可以让 VirtualEnv 使用不同的环境而不会产生任何冲突。

这篇博文对此进行了概述

引用:

为 Jython 安装 virtualenv。 只需输入“jeasy_install virtualenv”。 完成后,您应该在 Jython 安装的 bin 文件夹中有一个“virtualenv”工具。

所以在使用 Jython 时,可以使用不同的框架和包,而不会与全局包发生任何冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM