Java または JVM 言語用のPython virtualenvに似たものはありますか?
8 に答える
私が理解していることから、virtualenv を使用すると、個別のライブラリ インストール パスを使用でき、「仮想」Python インストールを効果的に分離できます。
Java には、「システム全体にインストールされた」ライブラリ(*)の概念がありません。ロードするライブラリのクラスパスを常に検索します。クラスパスはアプリケーションごとに定義できる (そして定義する必要がある!) ため、各アプリケーションはロードするライブラリとバージョンを選択できます。
1 レベル下に降りて、同じライブラリの 2 つの異なるバージョンを同時に必要とする 1 つのアプリケーションがある場合でも、クラスパスの策略を使ってそれを行うことができます。複雑になる可能性はありますが、確実に可能です (OSGi はこれがサポートされている 1 つの例であり、2 つの別個の Web アプリケーションを持つ Tomcat でさえこれを行います)。
virtualenv の説明でセキュリティへの言及をいくつか見てきました。Java にはかなり完全なセキュリティ システムが組み込まれています。サーバー アプリケーションでは、この方法で構成する方が簡単なため、オフになっていることがよくありますが、Java アプリケーションとは正確には何なのかを簡単に構成できます。することを許可しました。
(*) ほとんどの場合、拡張機能または拡張ライブラリがありますが、それらはあまり使用されておらず、任意のディレクトリから簡単にロードできます。
Ant、Maven、gradle などのビルド ツールは、pip
orに最も近いものeasy_install
です。
virtualenv の概念は、クラスパスによって行われます。したがって、Java の virtualenv は実際には必要ありません。
少し遅れるかもしれませんが、Groovy/Java には、Ruby の renv の Groovy バージョンであるgvm http://gvmtool.net/があります。
私はゴータム K ルーサーに丁重に同意します。プロジェクトの依存関係とパッケージ バージョンの管理は、別のプロジェクトを維持するための分離された自己完結型の仮想環境と同じではありません。
私の 2 セント -W
また、毎回変更M2_HOME
や設定を行うことなく、異なるMavenバージョン/設定および/またはJava SDKを使用するプロジェクト間のコンテキストの切り替えを簡素化する同様のソリューションを探していました。JAVA_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 を使用する場合、グローバル パッケージと競合することなく、さまざまなフレームワークとパッケージを使用できます。