8

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

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

4

5 回答 5

10

在 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

希望它有帮助,不得不搜索很长时间才能找到这个(:

于 2011-09-08T15:02:34.630 回答
6

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

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

于 2011-10-17T12:23:40.527 回答
3

至少在 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
于 2009-05-05T08:21:38.937 回答
3

您可以编写一个外部 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 方法(示例中的“服务”)创建和传递的变量。

于 2012-10-15T05:46:56.913 回答
0

如果您使用的是 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
于 2020-04-30T05:50:25.853 回答