Как настроить GroovyConsole, чтобы мне не приходилось импортировать библиотеки при запуске? - PullRequest
6 голосов
/ 04 мая 2009

У меня есть отличный скрипт, который использует стороннюю библиотеку. Каждый раз, когда я открываю приложение и пытаюсь запустить свой скрипт, мне нужно импортировать соответствующую библиотеку.

Я бы хотел иметь возможность открыть GroovyConsole и запустить мое приложение без импорта библиотеки.

Ответы [ 4 ]

8 голосов
/ 08 сентября 2011

В 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

Надеюсь, это поможет, пришлось долго искать, чтобы найти это (:

6 голосов
/ 17 октября 2011

Если вы просто хотите добавить файлы JAR в путь к классам, скопируйте (или символическую ссылку) их в ~/.groovy/lib (или %USER_HOME%/.groovy/lib в Windows).

Если вы хотите, чтобы фактические операторы import выполнялись при каждом запуске Groovy Console, отредактируйте файл groovy-starter.conf в соответствии с рекомендациями Squelsh.

2 голосов
/ 15 октября 2012

Вы можете написать внешний скрипт 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()

Из скрипта оболочки вызовите исполняемый файл 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').

1 голос
/ 05 мая 2009

По крайней мере в Linux Groovy GroovyConsole - это скрипт, имеющий следующую команду:

startGroovy groovy.ui.Console "$@"

Сам по себе startGroovy - это скрипт, запускающий Java. В скрипте startGroovy вы сможете изменить путь к классам и добавить недостающие библиотеки.

С самого началаGroovy:

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
...