1

jar ファイルを呼び出す短いシェル スクリプトを作成する簡単な方法を探しています。実行時のクラスパス用にこれらすべての jar ファイルを追跡 (およびインストール) しなければならないことは、(Eclipse で実行可能な jar ファイルを構築するのではなく) スクリプトを使用する目的を部分的に無効にします。これをMaven(または同等のもの)に管理してもらいたいです。

画像:

 #!/usr/bin/the-cool-shell

 use org.apache.commons/lang/3.0.0
 use org.json/json

 import org.json.*;

 new JSONObject("{}");

これにより、Maven から必要なアーティファクトが自動的に取得されます (最初にダウンロードした後のオーバーヘッドは基本的にゼロです)。

私のオプションは何ですか?

4

2 に答える 2

3

Groovy と Groovy Shell を使用している場合は、 Grapeインフラストラクチャを使用できます。

#!/usr/bin/env groovy

@Grab( 'log4j:log4j:1.2.14' )
import org.apache.log4j.Level
import org.apache.log4j.Logger

def logger = Logger.getLogger(GroovyShell.class)
Logger.rootLogger.level = Level.INFO

logger.info 'I am using the Log4j library by using Grape'

あなたの正確な例に関しては、これはうまくいきます:

#!/usr/bin/env groovy

@Grapes([
    @Grab('org.apache.commons:commons-lang3:3.0'),
    @Grab('org.json:json:20090211')
    ])
import org.json.*

new JSONObject('{}')

この場合、Groovy 構文を使用していましたが、通常の Java 構文でも問題ありません。


@Grapes注釈の Javadoc から取得:

クラスごとに複数のグラブが必要になる場合もありますが、注釈可能なノードごとに 1 つの注釈タイプしか追加できません。このクラスでは、複数のグラブを追加できます。

于 2012-08-23T08:27:26.860 に答える
1

Gradleを試すことができます。これはビルド管理ツールですが、Groovy をビルド スクリプトに使用し、Maven 依存関係モデルを使用します。したがって、スクリプトは、ソフトウェアのビルドとは異なることを行う Gradle の「ビルド」スクリプトである可能性があります。

于 2012-08-23T08:06:30.983 に答える