サードパーティのライブラリを使用するグルーヴィーなスクリプトがあります。アプリケーションを開いてスクリプトを実行しようとするたびに、適切なライブラリをインポートする必要があります。
ライブラリをインポートせずに、GroovyConsole を開いてアプリケーションを実行できるようにしたいと考えています。
サードパーティのライブラリを使用するグルーヴィーなスクリプトがあります。アプリケーションを開いてスクリプトを実行しようとするたびに、適切なライブラリをインポートする必要があります。
ライブラリをインポートせずに、GroovyConsole を開いてアプリケーションを実行できるようにしたいと考えています。
Linuxでは、あなたも持っています
/usr/share/groovy/conf/groovy-starter.conf
ここで、特定のライブラリを追加できます。
# load user specific libraries
load !{user.home}/.groovy/lib/*.jar
load /home/squelsh/src/neo4j-community-1.4.M03/lib/*.jar
load /home/squelsh/src/neo4j-community-1.4.M03/system/lib/*.jar
これを見つけるのに長い時間をかけて検索する必要がありました (:
JAR をクラスパスに追加するだけの場合は、JAR を~/.groovy/lib
(または%USER_HOME%/.groovy/lib
Windows に) コピー (またはシンボリック リンク) します。
import
Groovy Console が起動するたびに実際のステートメントを実行する場合は、Squelsh の提案に従って groovy-starter.conf ファイルを編集します。
すべてのインポートを行い、GroovyConsole オブジェクトを作成し、このオブジェクトで run() メソッドを呼び出す外部 Groovy スクリプトを作成できます。
http://groovy.codehaus.org/Groovy+Console#GroovyConsole-EmbeddingtheConsoleも参照してください。
例: start.groovy
import groovy.ui.Console;
import com.botkop.service.*
import com.botkop.service.groovy.*
def env = System.getenv()
def service = new ServiceWrapper(
userName:env.userName,
password:env.password,
host:env.host,
port:new Integer(env.port))
service.connect()
Console console = new Console()
console.setVariable("service", service)
console.run()
シェル スクリプトから、groovy スクリプトを提供する groovy 実行可能ファイルを呼び出します。
#!/bin/bash
if [ $# -ne 4 ]
then
echo "usage: $0 userName password host port"
exit 10
fi
export userName=$1
export password=$2
export host=$3
export port=$4
export PATH=~/apps/groovy/bin:/usr/bin:$PATH
export CLASSPATH=$(find lib -name '*.jar' | tr '\n' ':')
groovy start.groovy
GroovyConsole のコードは、start.groovy で行われたインポートと、setVariable メソッドで作成および渡された変数 (例では「サービス」) を利用できるようになりました。