2016-04-08 15 views
2

Ich bin ein gmake Benutzer Übergang zu Gradle. Ich habe eine Multiprojektstruktur, wobei ein Teilprojekt ein Java-Projekt und der andere eine selbstgebraute Sprache ist. Die selbst gebraute Sprache verwendet keine Gradle-Plugins. Jetzt möchte ich eine Aufgabe hinzufügen, die ein Java-Programm ausführt, um XML zu generieren, wenn eine meiner selbstgebraute Quelldateien geändert wurde. In macht, würde ich erklären, nur eine Abhängigkeit von inputFile.mine oder * .mine neben den Zielnamen, aber ich konnte nicht leicht finden, wie diese grundlegende Sache mit Gradle zu tun. Derzeit erzwinge ich die Aufgabe, immer mit dem möglicherweise hässlichen Workaround auszuführen. Ich möchte das durch etwas dependsOn * .mine ersetzen. Die Gradle Bedienungsanleitung hat ein ganzes Kapitel gewidmet erklären verschiedene Arten von Dateien an, aber ich sah nicht, wie eine Abhängigkeit zu erklären.Dateiabhängigkeit Gradle

task generateXML(type: Exec) { 
generateXML.getOutputs().upToDateWhen({false}) // Force it to execute always 
executable("java.exe") 
args("-jar", "resources/generateXml.jar", "src/inputFile.mine") 
} 

Vielen Dank, dass Sie einem Neuling geholfen haben.

Antwort

0

In Gradle können Sie Aufgabeneingaben und -ausgaben definieren.

Zum Beispiel:

task generateXML(type: Exec) { 
    inputs.file ("src/inputFile.mine") 
    executable("java.exe") 
    args("-jar", "resources/generateXml.jar", "src/inputFile.mine") 
} 

Siehe https://docs.gradle.org/current/userguide/more_about_tasks.html und https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskInputs.html für weitere Informationen.

Seitennotiz: Wenn Sie Ihren Build mit -i ausführen, wird Gradle Ihnen sagen, was während der aktuellen Überprüfung passiert ist.

+0

Vielen Dank! Diese Referenzen und Beispiele sind genau das, was ich brauchte. Insbesondere Abschnitt 17.9. "Überspringen von Aufgaben, die auf dem neuesten Stand sind" behebt das Problem. –

Verwandte Themen