我有一个使用第三方库的 groovy 脚本。每次我打开应用程序并尝试运行我的脚本时,我都必须导入正确的库。
我希望能够打开 GroovyConsole 并运行我的应用程序,而无需导入库。
我有一个使用第三方库的 groovy 脚本。每次我打开应用程序并尝试运行我的脚本时,我都必须导入正确的库。
我希望能够打开 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 添加到类路径中,请将它们复制(或符号链接)到~/.groovy/lib
(或%USER_HOME%/.groovy/lib
在 Windows 上)。
如果您希望import
每次 Groovy 控制台启动时都运行实际语句,请按照 Squelsh 的建议编辑 groovy-starter.conf 文件。
至少在 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
您可以编写一个外部 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 方法(示例中的“服务”)创建和传递的变量。
如果您使用的是 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