Dicas de scripts Gant em Grails

  1. Enquanto GRAILS-7274 não for corrigido, use try-catch ao escrever build event handlers;
        eventCreateWarEnd = {warName, stagingDir ->
             try {
                 // Script logic goes here...
             } catch (Exception e) {
                 e.printStackTrace()
                 throw e
             }
        }
    
  2. Adicione “verbosidade” ao log do Gant, sempre que necessário:
    import org.codehaus.gant.GantState
    // (...)
    GantState.verbosity = GantState.VERBOSE
    ant.logger.setMessageOutputLevel(GantState.verbosity)
    
  3. Prefira AntBuilder.path à utilização de elementos aninhados de classpath:
            ant.path(id: 'myClasspath', { pathelement(location: 'somewhere') })
            ant.java(classname: 'aClass', dir: 'anyDir', fork: true, 
                        classpathref:'myClasspath') {}
    

O “prêmio” por ter lido até aqui é trecho de código necessário à execução do weblogic.appc (entre outras atividades, ele pré-compilará os JSPs) após a criação do arquivo .war do seu projeto:

// _Events.groovy
import org.codehaus.gant.GantState

eventCreateWarEnd = {warName, stagingDir ->

    def beaHome = System.getenv('BEA_HOME')?: 'C:/bea'
    try {
        println "Executing weblogic.appc ${beaHome} ${warName}"

        //GantState.dryRun = true
        GantState.verbosity = GantState.VERBOSE
        ant.logger.setMessageOutputLevel(GantState.verbosity)

        File warFile = new File(warName)
        File tmpFile = new File(warFile.parentFile, "${warFile.name.tokenize('.')[0]}_tmp.war")
        ant.move(file: warFile, tofile: tmpFile)

        ant.path(id: 'appcClasspath', { pathelement(location: "${beaHome}/wlserver_10.3/server/lib/weblogic.jar") })

        ant.java(classname: 'weblogic.appc', dir: warFile.parentFile, fork: true, classpathref:'appcClasspath') {
            arg(line: "-output ${warFile.name} -lineNumbers -g -O -keepgenerated ${tmpFile.name}")
        }
    } catch (Throwable e) {
        e.printStackTrace()
        throw e
    }
}

Referências adicionais:

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


1 + quatro =

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>