2017-08-02 6 views
0

Ich möchte ein Gradle-Build-Skript implementieren, das einige Java-Klassen kompiliert und in ein Tomcat-Verzeichnis kopiert. Ich möchte Gradle Java Plugin nicht verwenden, da es viele Dinge tut, die nicht relevant sind. Ich möchte meine eigenen kompilieren & Aufgaben zu definieren, die es tut. Ich habe es wie folgt implementiert:Compile-Task wird erfolgreich ausgeführt, generiert aber keine Klassendateien

task compile (type: JavaCompile) { 
    source = fileTree('$srcdir') 
    destinationDir = file('$builddir') 
    classpath = files('lib') 
    sourceCompatibility = '1.8' 
} 


task deploy (type: Copy) { 
    dependsOn compile 
    from fileTree('build') { 
     include fileTree('classes') 
    } 
    from fileTree('lib') { 
     include '*' 
    } 
into '${tomcathome}//${projectname}' 
} 

Ich habe Deploy Task noch nicht berührt. Wenn ich Kompilieraufgaben ausführe, wird es erfolgreich ausgeführt, generiert aber keine Klassendateien. Ich erwarte, dass es im Verzeichnis/build erzeugt wird.

Bitte vorschlagen.

Dank

+0

lesen Wenn Sie GString „“ und seine $ builddir – LazerBanana

+0

Das gleiche Problem zu verwenden, für ' '$ srcdir'' mit Variablen benötigen. Ich weiß nicht, wo Sie 'srcdir' angegeben haben, aber Sie können es nicht mit einem einfachen String (einfache Anführungszeichen) verwenden, weil es auf diese Weise immer als literaler Speicherort interpretiert wird (ein Unterordner namens $ srcdir' in diesem Fall). Sie müssen einen GString (doppelte Anführungszeichen) verwenden, wie bereits von @LazerBanana angegeben. Oder Sie könnten einfach die Variable verwenden, anstatt sie in einen GString einzufügen: 'fileTree (srcdir)' –

+0

Danke für Ihre Eingaben. Dieses String-Literal-Konzept hat mir geholfen, mein Problem anzugehen. Ich habe versucht, diese Parameter - srcdir, builddir und ähnliche andere in gradle.properties zu konfigurieren. Diese Datei befindet sich auf derselben Ebene wie meine build.gradle, aber ich kann die Werte der Parameter nicht abrufen, wenn sie in "gradle.properties" konfiguriert sind. Muss ich etwas anderes tun, damit diese Eigenschaftendatei geladen wird, bevor die Build-Aufgaben gestartet werden? – Techie

Antwort

0

Um die Kommentare in der Antwort zusammenfassen, müssen Sie GString wie @ verwenden lu.koerfer angegeben

diese Art und Weise wird es als die wörtliche Lage (ein Unterordner mit dem Namen $ immer interpretiert werden srcdir in diesem Fall)

Dies ist erforderlich, wenn Variablen in einem String verwenden, wenn es nicht in einem String verwenden muß dann nicht (dann) Sie nicht ein Dollar-Zeichen benötigen.

Nicht sicher, wie Ihre Variablen definiert sind, aber für Build und Quellverzeichnisse sollten Sie idealerweise Gradle Variablen zur Verfügung gestellt verwenden

buildDir das Build-Verzeichnis zeigt

sourceSets.main.java.getSrcDirs() Quellverzeichnisse zu erhalten (je nach Projektstruktur)

oder sourceSets.main.java.srcDirs aber beachten Sie, dies wird die Sammlung Ihrer Quellverzeichnisse zurückgeben, abhängig davon, wie Sie Ihre sourceSets angegeben haben, oder wenn Sie überhaupt nicht haben, wird standardmäßig eine maven convention structure 01 zurückgegeben

Für einige globale Variablen bitte über Ext variables

+0

Danke für Ihre Eingaben. Dieses String-Literal-Konzept hat mir geholfen, mein Problem anzugehen. Ich habe versucht, diese Parameter - srcdir, builddir und ähnliche andere in gradle.properties zu konfigurieren. Diese Datei befindet sich auf derselben Ebene wie meine build.gradle, aber ich kann die Werte der Parameter nicht abrufen, wenn sie in "gradle.properties" konfiguriert sind. Muss ich etwas anderes tun, damit diese Eigenschaftendatei geladen wird, bevor die Erstellungsaufgaben gestartet werden? – Techie

+0

Lesen Sie über Ext-Variablen – LazerBanana

Verwandte Themen