2015-04-24 9 views
6

Ich versuche, um das Problem in GRADLE-2293 beschrieben zu arbeiten, wo erzeugten Dateien immer aktualisiert werden, weil ein Zeitstempel auf die Eclipse-Dateien im Verzeichnis .settings durch die Gradle plugin die die erzeugt befinden geschrieben Eclipse-Projektdateien.Wie Text in Dateien mit Gradle/Groovy-Funktionalität ersetzen

Die Dateien enthalten einen Header wie diese, die Ich mag würde

# 
#Fri Mar 27 10:26:55 CET 2015 

Zeit entfernen ich eine Exec Aufgabe die externe Anwendung sed auszuschneiden Zeilen beginnend mit ‚#‘ zu verwenden, ist mit:

task adjustEclipseSettingsFile(type: Exec) { 
    executable 'sed' 
    args '-i','-e','s/^#.*//g','.settings/org.eclipse.jdt.core.prefs' 
} 
eclipseJdt.finalizedBy adjustEclipseSettingsFile 

jedoch fügt dies eine Abhängigkeit von Betriebssystem-Binärdateien hinzu, die ich vermeiden möchte.

Wie kann ich das einfache Entfernen von Zeilen, die in einer Gradle-Task mit '#' beginnen, ohne externe Tools aufrufen?

Antwort

6

Es gibt wirklich viele Möglichkeiten, es zu tun, die mit ant ist wohl verlässlichste:

task removeLines << { 
    ant.replaceregexp(match:'^#.*', replace:'', flags:'g', byline:true) { 
     fileset(dir: project.projectDir, includes: 'lol') 
    } 
}                                            
+0

Danke, genau das, was ich gesucht habe! – centic

+0

BTW, ich musste rootDir durch projectDir ersetzen, damit es auch in Multiprojekt-Setups funktioniert – centic

Verwandte Themen