Groovysh init script

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

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

Видел это:

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

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('stackru')
===> Hello stackru

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

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

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

За этот пост:

похоже, что Groovy <= 2.3 не поддерживает это, и он будет присутствовать в Groovy 2.4 с использованием этого синтаксиса:

groovysh -e foo.groovy
Другие вопросы по тегам