How do you configure GroovyConsole so I don't have to import libraries at startup?

前端 未结 5 1897
长发绾君心
长发绾君心 2021-02-06 04:44

I have a groovy script that uses a third party library. Each time I open the application and attempt to run my script I have to import the proper library.

I would lik

相关标签:
5条回答
  • 2021-02-06 05:18

    At least on Linux groovy GroovyConsole is a Script has the Following command:

    startGroovy groovy.ui.Console "$@"
    

    startGroovy itself is a script which starts Java. Within the startGroovy script you should be able to modify your classpath and add the missing librarys.

    From 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
    
    0 讨论(0)
  • 2021-02-06 05:24

    If you just want to add the JARs to the classpath, copy (or symlink) them to ~/.groovy/lib (or %USER_HOME%/.groovy/lib on Windows).

    If you want the actual import statements to run every time Groovy Console starts, edit the groovy-starter.conf file as suggested by Squelsh.

    0 讨论(0)
  • 2021-02-06 05:29

    If you are on a Mac, I would highly recommend using SDKMAN to manage Groovy installations.

    Once installed via SDKMAN, you can modify ~/.sdkman/candidates/groovy/current/bin/groovy/conf/groovy-starter.conf. Packages you add here will be automatically imported at runtime whenever you start a Groovy Console session. You would want to add them under the section labelled in the example below:

        # load user specific libraries
        load !{user.home}/.groovy/lib/*.jar
        load !{user.home}/.groovy/lib/additional_package.jar
    
    0 讨论(0)
  • 2021-02-06 05:35

    In Linux you also have

    /usr/share/groovy/conf/groovy-starter.conf
    

    Here you can add your specific libs:

    # 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
    

    Hope it helps, had to search long time to find this (:

    0 讨论(0)
  • 2021-02-06 05:39

    You can write an external Groovy script that does all the imports, creates a GroovyConsole object, and calls the run() method on this object.

    See also http://groovy.codehaus.org/Groovy+Console#GroovyConsole-EmbeddingtheConsole

    For example: 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()
    

    From a shell script call the groovy executable providing it with the groovy script:

    #!/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
    

    The code in GroovyConsole can now make use of the imports done in start.groovy, as well as of the variables created and passed with the setVariable method ('service' in the example).

    0 讨论(0)
提交回复
热议问题