私は、いくつかのグルー コードに Perl スクリプトを使用する適切なサイズの Java プロジェクトに取り組んでいます。これらを Groovy スクリプトに置き換える方法を見つけようとしています。これにより、スクリプト作成の利便性が向上しますが、何年にもわたって構築されてきたすべての Java コードへのアクセスが向上します。これは、プロジェクト構造がどのように見えるかの例です。
.
|____core
| |____classes
| | |____com
| | |____project
| | |____core
| | |____CoreClass.class
| |____src
| |____com
| |____project
| |____core
| |____CoreClass.java
|____scripts
| |____someScript.groovy
|____util
|____classes
| |____com
| |____project
| |____util
| |____UtilClass.class
|____src
|____com
|____project
|____util
|____UtilClass.java
(注:util
とcore
は、プロジェクト内の約 12 個の同様のフォルダーのうちの 2 つにすぎません)
コマンド ラインから実行したいのですがsomeScript.groovy
、 と の両方をインスタンス化できる必要がUtilClass
ありCoreClass
ます。Groovy スクリプトを使用してクラスパスを設定するさまざまな方法を読みましたが、適切なものは見つかりませんでした。
ここでのポイントは、Perl を使用する現在のシステムよりも使いやすい Groovy の使用方法を見つけることです。そのためには、3つの基準を満たす必要があると考えています。
- システムや環境を汚染しない
私はプロジェクトをできるだけ自己完結型に保ちたいと思っています。開発者は、プロジェクトをソース管理からチェックアウトして実行someScript.groovy
し、プロジェクト内の他のクラスの場所を認識できる必要があります。開発者が CLASSPATH 環境変数をすべてのプロジェクト クラス ディレクトリを指すように設定する必要はありません。
- 長いコマンド ライン パラメーターがない
スクリプトは、コマンド ラインから簡単に実行できる必要があります。フラグが必要な場合-cp
、開発者はプロジェクト内のさまざまなクラス ディレクトリをすべて指定するために小説を入力する必要があります。
- 定型文なし
someScript.groovy
クラスローダーのインスタンスを取得し、.java
または.class
ファイルへのパスを指定することを含むいくつかのソリューションを見てきました。これにより、スクリプトは非常に難しく、書くのが面倒になります。
これらの基準は絶対的なものではありません。それらの1つを少し動かさなければならない場合でも、解決策はまだ機能する可能性があります. ここでは Eclipse を使用しているため、Eclipse を介したある種のプロジェクト構成を含むソリューションが適している可能性があります。ボイラープレート コードが必要な場合は、必要なボイラープレート コードを含むバージョンに Eclipse によって自動的にコンパイルされる Groovy ソース ファイルが必要です。
groovy someScript.groovy
または のいずれかを介してスクリプトを呼び出すことは、someScript.groovy
おそらく許容されます。