你如何配置GroovyConsole所以我不必在启动时导入库?

时间:2009-05-04 18:37:23

标签: groovy import classpath groovy-console

我有一个使用第三方库的groovy脚本。每次我打开应用程序并尝试运行我的脚本时,我都必须导入适当的库。

我希望能够打开GroovyConsole并运行我的应用程序,而无需导入库。

5 个答案:

答案 0 :(得分:8)

在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

希望它有所帮助,不得不长时间搜索这个(:

答案 1 :(得分:6)

如果您只想将JAR添加到类路径中,请将它们复制(或符号链接)到~/.groovy/lib(或Windows上的%USER_HOME%/.groovy/lib)。

如果您希望每次Groovy Console启动时都运行实际的import语句,请按照Squelsh的建议编辑groovy-starter.conf文件。

答案 2 :(得分:2)

您可以编写外部Groovy脚本来执行所有导入,创建GroovyConsole对象,并在此对象上调用run()方法。

另见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()

从shell脚本中调用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方法创建和传递的变量(示例中的“service”)。

答案 3 :(得分:1)

至少在Linux上groovy GroovyConsole是一个Script有以下命令:

startGroovy groovy.ui.Console "$@"

startGroovy本身是一个启动Java的脚本。在startGroovy脚本中,您应该能够修改类路径并添加缺少的库。

来自startGroovy:

startGroovy ( ) {
    CLASS=$1
    shift
    # Start the Profiler or the JVM
    if $useprofiler ; then
        runProfiler
    else
        exec "$JAVACMD" $JAVA_OPTS \
            -classpath "$STARTER_CLASSPATH" \
            -Dscript.name="$SCRIPT_PATH" \
            -Dprogram.name="$PROGNAME" \
            -Dgroovy.starter.conf="$GROOVY_CONF" \
            -Dgroovy.home="$GROOVY_HOME" \
            -Dtools.jar="$TOOLS_JAR" \
            $STARTER_MAIN_CLASS \
            --main $CLASS \
            --conf "$GROOVY_CONF" \
            --classpath "$CP" \
            "$@"
    fi

答案 4 :(得分:0)

如果您使用的是Mac,我强烈建议您使用SDKMAN来管理Groovy安装。

通过SDKMAN安装后,您可以修改~/.sdkman/candidates/groovy/current/bin/groovy/conf/groovy-starter.conf。每当您启动Groovy Console会话时,将在运行时自动导入您在此处添加的包。您可能希望将它们添加到下面示例中标有标签的部分下:

    # load user specific libraries
    load !{user.home}/.groovy/lib/*.jar
    load !{user.home}/.groovy/lib/additional_package.jar