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