Domanda

Sto cercando di scrivere un compito Gradle che copia generati file di guerra alla mia istanza di Tomcat locale:

Questo non funziona e non sono sicuro di come eseguire il debug esso:

 task deploylocal() << {
    println "Copy from ${buildDir}\\libs into ${tomcatHome}/webapps"
    copy{
      from "${buildDir}\\libs"
      into "${tomcatHome}/webapps"
      include '*.war'
    }
  }

Tutte le idee su cosa fare dopo?

È stato utile?

Soluzione

In alternativa, si potrebbe essere in grado di sfruttare la Gradle-tomcat-plugin

Altri suggerimenti

Il compito WAR è consapevole dei manufatti che genera.

task deployToTomcat(type: Copy) {
    from war.archivePath
    into "${tomcatHome}/webapps"
}

I compiuto questo con:

task deploy (dependsOn: war){
    copy {
        from "build/libs"
        into "C:/dev/jetty-distribution-9.1.4.v20140401/webapps"
        include "*.war"
    }
}

in esecuzione in questo modo:

gradle deploy

Si potrebbe di portate usare il plugin Tomcat. La mia configurazione mi impedisce di utilizzare / modificare l'uscita dalla guerra di dialogo e Tomcat opzione.

Personalmente, come il seguente sapore (copiato dal mio build.gradle).

tomcat_home='tomcat_location'
tomcat_bin=tomcat_home + '/bin'
tomcat_start=tomcat_bin + '/startup.sh'
tomcat_stop=tomcat_bin + '/shutdown.sh'
tomcat_webapps = tomcat_home + '/webapps'

task tom << {
    if (project.hasProperty('start')) {
        startTom()
    } else if (project.hasProperty('stop')) {
        stopTom()
    } else if (project.hasProperty('deployNstart')) {
        stopTom()
        webappsCopy()
        startTom()
    } else {
        throw new RuntimeException('unrecognized option')
    }
}

def stopTom() {
    executeCmd(tomcat_stop)
}

def startTom() {
    executeCmd(tomcat_start)
}


def executeCmd(command) {
    proc = command.execute()
    proc.waitFor()
}

def webappsCopy() {
    copy {
        from 'war file location' // could be exploded or war itself
        into tomcat_webapps
    }
}

- si chiama le varie opzioni di includere nel compito 'tom' dalla riga di comando -

$ gradle tom -Pstart
$ gradle tom -Pstop
$ gradle tom -PdeployNstart

questo potrebbe potenzialmente crescere ulteriormente, come aggiungo altri comandi / opzioni relative alla Tomcat. Alcune indicazioni:

  1. spostare la posizione ecc per gradle.properties in modo da poter lavorare in ambienti diversi.
  2. polling la porta del server Tomcat per sintonizzare opzioni e msgs.
  3. passaggio al codice del plugin / compito che potrebbe essere riutilizzato.

Questa versione limitata funziona per me in questo momento: -)

Si potrebbe dare il Gradle Cargo plug un colpo. Essa consente di distribuire un file WAR per un locale così come un Tomcat remoto.

Per favore, assicuri l'archivio di guerra è sempre in bundle prima dell'esecuzione deploylocal. Forse, è possibile definire una dipendenza:

task deploylocal(dependsOn: build) << {

NB C'è una proprietà convegno a Java Plugin chiamato libsDir. Esso consente di costruire riferimento / librerie directory in modo migliore:

 task deploylocal(dependsOn: build) << {
    println "Copy from ${libsDir.getPath()} into ${tomcatHome}/webapps"
    copy{
      from libsDir
      into "${tomcatHome}/webapps"
      include '*.war'
    }
  }

In primo luogo, il tentativo di eseguire il debug. Controllare l'ordine di esecuzione dell'attività; vedere se è in esecuzione dopo che il file di guerra viene prodotto. Anche se si dice UP-TO-DATE.

Il problema potrebbe essere la mancanza di eventuali dipendenze tra questo compito e l'uscita che si desidera copiare.

Provare a sostituire questo compito generale con un'istanza di un'attività di copia, e farlo dipende dal file di guerra si sta cercando di copiare.

Qualcosa di simile a questo:

task deployLocal(type: Copy) { 
    dependsOn configurations.archives.buildArtifacts
    from configurations.archives.allArtifacts*.file 
    into("$tomcatHome/webapps") 
}

In realtà dopo un sostituito questa funzionalità con plugin di carico per Gradle e RUNN il deploy da

gradle cargoRunLocal
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top