Сценарий инициализации Groovysh

Я ищу способ инициализировать groovysh, а затем перейти к обычному интерактивному сеансу groovysh. То есть:

  • Запустите некоторые скрипты (например, импорт или что-то еще)
  • Продолжайте работать в groovysh, как если бы предыдущий скрипт был набран вручную с самого начала сеанса.

Видел это:

но я хотел бы иметь возможность делать это для каждого приложения, а не для каждого пользователя. т.е. разные приложения обычно не импортируют одни и те же вещи (или в противном случае инициализируют одинаково). Это возможно?


person steady rain    schedule 24.10.2014    source источник


Ответы (3)


Начиная с Groovy 2.4 вы можете использовать groovysh -e '... your code here ...'.

Примеры:

$ groovysh -e '2+2'
Groovy Shell (2.4.7, JVM: 1.8.0_131)
Type ':help' or ':h' for help.
----------------------------------------------------------
groovy:000> 2+2
===> 4

Если вы хотите предварительно загрузить скрипт, используйте :load следующим образом:

$ cat preamble.groovy 
def hello(x) {
  "Hello ${x}"
}
println hello("world")

$ groovysh -e ':load preamble.groovy'
Groovy Shell (2.4.7, JVM: 1.8.0_131)
Type ':help' or ':h' for help.
----------------------------------------------------------
groovy:000> :load preamble.groovy
===> true
Hello world
===> null
groovy:000> hello('stackoverflow')
===> Hello stackoverflow

(в последнем примере я вручную набрал последнюю строку, я мог бы использовать функцию hello, определенную в преамбуле)

person qlown    schedule 14.06.2017

Согласно этому сообщению:

похоже, что Groovy ‹= 2.3 не поддерживает это, и он будет присутствовать в Groovy 2.4, используя следующий синтаксис:

groovysh -e foo.groovy
person steady rain    schedule 24.10.2014
comment
На самом деле это groovysh -e ' ... your code here ...', например groovysh -e '2+2'. К сожалению groovysh -e 'load "foo.groovy"' не работает :( - person qlown; 15.06.2017

Использование ключевого слова load похоже работает:

$ cat test.groovy
myStr = "hello World!"
$
$ groovysh
groovy:000> load test.groovy
===> hello World!
groovy:000> println myStr
hello World!
===> null
groovy:000>
person kmad1729    schedule 14.06.2017