grails groovy grape

grails - ¡Poniendo a Groovy''s Grape Going!



(7)

De acuerdo. Parece una demostración corta de trabajo (desde la consola groovy)

groovy.grape.Grape.initGrape() @Grab(group=''com.jidesoft'', module=''jide-oss'', version=''[2.2.1,2.3.0)'') public class UsedToExposeAnnotationToComplier {} com.jidesoft.swing.JideSplitButton.class.name

Cuando se ejecuta, produce

Resultado: "com.jidesoft.swing.JideSplitButton"

¡¡Muy genial!!

Intenté usar la nueva capacidad de Groovy Grape en Groovy 1.6-beta-2 pero recibí un mensaje de error;

unable to resolve class com.jidesoft.swing.JideSplitButton

de Groovy Console (/opt/groovy/groovy-1.6-beta-2/bin/groovyConsole) al ejecutar el ejemplo de stock;

import com.jidesoft.swing.JideSplitButton @Grab(group=''com.jidesoft'', module=''jide-oss'', version=''[2.2.1,)'') public class TestClassAnnotation { public static String testMethod () { return JideSplitButton.class.name } }

Incluso intenté ejecutar la herramienta de línea de comando de uva para garantizar que la biblioteca se importara. Me gusta esto;

$ /opt/groovy/groovy-1.6-beta-2/bin/grape install com.jidesoft jide-oss

que instala la biblioteca muy bien. ¿Cómo obtengo el código para ejecutar / compilar correctamente desde la consola groovy?


Todavía hay algunas fallas en resolver la rutina de cambio de inicio / muerte. Para Beta-2, primero haz esto en su propio script:

groovy.grape.Grape.initGrape()

Otro problema con el que te encontrarás se relaciona con las alegrías de usar un rango superior ilimitado. Jide-oss desde 2.3.0 en adelante ha estado compilando su código en códigos de byte Java 6, por lo que necesitará ejecutar la consola en Java 6 (que es lo que le gustaría hacer para Swing de todos modos) o establecer un límite superior en el rangos, como tal

import com.jidesoft.swing.JideSplitButton @Grab(group=''com.jidesoft'', module=''jide-oss'', version=''[2.2.1,2.3.0)'') public class TestClassAnnotation { public static String testMethod () { return JideSplitButton.class.name } } new TestClassAnnotation().testMethod()


Ejemplo diferente utilizando la última RC-2 (nota: Grab anota createEmptyInts):

// create and use a primitive array import org.apache.commons.collections.primitives.ArrayIntList @Grab(group=''commons-primitives'', module=''commons-primitives'', version=''1.0'') def createEmptyInts() { new ArrayIntList() } def ints = createEmptyInts() ints.add(0, 42) assert ints.size() == 1 assert ints.get(0) == 42


Otro ejemplo (nota: Grab anota getFruit ):

// Google Collections example import com.google.common.collect.HashBiMap @Grab(group=''com.google.code.google-collections'', module=''google-collect'', version=''snapshot-20080530'') def getFruit() { [grape:''purple'', lemon:''yellow'', orange:''orange''] as HashBiMap } assert fruit.inverse().yellow == ''lemon''


Otro ejemplo (nota: Grab anota getHtml):

// find the PDF links in the Java 1.5.0 documentation @Grab(group=''org.ccil.cowan.tagsoup'', module=''tagsoup'', version=''0.9.7'') def getHtml() { def parser = new XmlParser(new org.ccil.cowan.tagsoup.Parser()) parser.parse("http://java.sun.com/j2se/1.5.0/download-pdf.html") } html.body.''**''[email protected](~/.*/.pdf/).each{ println it }


Finalmente lo conseguí trabajando para Groovy Shell (1.6.5, JVM: 1.6.0_13). Esto debería documentarse mejor.

Primero en la línea de comando ...

uva instalar org.codehaus.groovy.modules.http-builder http-builder 0.5.0-RC2

Entonces en groovysh ...

groovy:000> import groovy.grape.Grape groovy:000> Grape.grab(group:''org.codehaus.groovy.modules.http-builder'', module:''http-builder'', version:''0.5.0-RC2'') groovy:000> def http= new groovyx.net.http.HTTPBuilder(''http://rovio'') ===> groovyx.net.http.HTTPBuilder@91520

El @grab se usa mejor en un archivo que el shell.


La declaración de importación debe aparecer después de las capturas.
PD. Al menos una declaración de importación debe existir después de la captura

@Grab(group=''com.jidesoft'', module=''jide-oss'', version=''[2.2.1,)'') import com.jidesoft.swing.JideSplitButton public class TestClassAnnotation { public static String testMethod () { return JideSplitButton.class.name } }