Executar uma classe Groovy em um pacote a partir da linha de comando
-
06-09-2019 - |
Pergunta
Existe uma maneira de executar uma classe Groovy, especificando o pacote com pontos, como em java?
Exemplo: Arquivo ./my/package/MyClass.groovy:
package my.package
class MyClass {
static void main(String[] args) {
println "ok"
}
}
> cd my/package my/package> groovy MyClass ok > cd ../.. > groovy my/package/MyClass.groovy ok > groovy my/package/MyClass ok > groovy my.package.MyClass Caught: java.io.FileNotFoundException: my.package.MyClass
Eu estava esperando o último comando de trabalho. Eu tentei várias maneiras de definir o caminho de classe, sem sucesso.
Solução
Em primeiro lugar, pacote é uma palavra-chave reservada, para que você não pode usá-lo como um nome de um pacote.
Em segundo lugar, você não pode fazer isso em Groovy, uma vez que a notação de ponto é usada para as aulas, não para scripts, então você precisa de um arquivo de classe compilado para usá-lo.
Ainda assim, você pode substituir o comando groovy com java + classpath:
java -cp /usr/share/java/groovy/embeddable/groovy-all-1.6.3.jar:. my.some.MyClass
Você pode adicionar um alias para ele 'g_java', por exemplo, para torná-lo menos extenso.