您如何配置GroovyConsole以使我不';启动时不必导入库?

您如何配置GroovyConsole以使我不';启动时不必导入库?,groovy,import,classpath,groovy-console,Groovy,Import,Classpath,Groovy Console,我有一个使用第三方库的groovy脚本。每次打开应用程序并尝试运行脚本时,我都必须导入正确的库 我希望能够在不必导入库的情况下打开GroovyConsole并运行我的应用程序。至少在Linux上,groovy GroovyConsole是一个具有以下命令的脚本: startGroovy groovy.ui.Console "$@" startGroovy本身就是一个启动Java的脚本。在startGroovy脚本中,您应该能够修改类路径并添加缺少的库 来自startGroovy: startG

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


我希望能够在不必导入库的情况下打开GroovyConsole并运行我的应用程序。

至少在Linux上,groovy GroovyConsole是一个具有以下命令的脚本:

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
在Linux中,您也有

/usr/share/groovy/conf/groovy-starter.conf
您可以在此处添加特定的LIB:

# 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添加到类路径,请将它们复制(或符号链接)到
~/.groovy/lib
(或Windows上的
%USER\u HOME%/.groovy/lib


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

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

另见

例如: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方法(“示例中的服务”)创建和传递的变量。

如果您在Mac上,我强烈建议使用SDKMAN来管理groovy安装

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

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