Frage

Ich versuche, eine Gradle Aufgabe zu schreiben, die Kopien Krieg Dateien auf meiner lokalen tomcat-Instanz erstellt:

Dies funktioniert nicht, und ich bin nicht sicher, wie es zu debuggen:

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

Alle Ideen, was als nächstes zu tun?

War es hilfreich?

Lösung

Alternativ können Sie in der Lage sein, das gradle-tomcat-Plugin

Andere Tipps

Die WAR Aufgabe ist sich der Artefakte erzeugt es.

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

ich erreicht dies mit:

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

es wie folgt ausgeführt werden:

gradle deploy

Sie könnten von Gängen die tomcat-Plugin verwenden. Mein Setup hindert mich mit / modifizieren, um die aus der Box Krieg & tomcat Option.

Ich persönlich mag die folgende Aroma (aus meiner build.gradle kopiert).

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
    }
}

- Sie rufen die verschiedenen Optionen, die Sie umfassen in der ‚tom‘ Aufgabe von der Kommandozeile -

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

Dies könnte möglicherweise weiter wachsen, da ich mehr Befehle / Optionen Tomcat im Zusammenhang hinzuzufügen. Ein paar Hinweise:

  1. bewegt den Standort usw. zu gradle.properties so dass es funktionieren könnte in verschiedenen Umgebungen.
  2. abfragen Ihre Tomcatbediener Port zur Feinabstimmung Optionen und Nachr.
  3. Umzug nach Plugin / Aufgabencode, die wiederverwendet werden konnte.

Diese limitierte Version funktioniert für mich jetzt: -)

könnten Sie geben die Gradle Cargo-Plugin ein Schuss. Damit können Sie auch als Remote-Tomcat eine WAR-Datei auf einem lokalen bereitstellen.

Bitte stellen Sie sicher, dass der Krieg Archiv gebündelt zu werden, bevor deploylocal ausgeführt wird. Vielleicht könnten Sie eine Abhängigkeit definieren:

task deploylocal(dependsOn: build) << {

NB Es ist eine Konvention Eigenschaft in Java namens libsDir Plugin. Es ermöglicht Ihnen, Referenz build / LIBS-Verzeichnis in einer besseren Art und Weise:

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

Zuerst versuchen zu debuggen. Überprüfen Sie die Reihenfolge der Taskausführung; sehen, ob es es ausgeführt wird, nachdem die Krieg-Datei erzeugt wird. Auch, ob es sagt UP-TO-DATE.

Das Problem der Mangel an Abhängigkeiten könnte zwischen dieser Aufgabe und der Ausgabe, die Sie kopieren möchten.

Versuchen Sie, diese allgemeine Aufgabe mit einer Instanz einer Kopie Aufgabe zu ersetzen, und es hängt von der WAR-Datei zu kopieren Sie versuchen.

So etwas wie folgt aus:

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

Eigentlich später ersetzt diese Funktionalität mit Fracht-Plugin für gradle und die deploy runn von

gradle cargoRunLocal
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top