Как заменить текст в файлах с помощью функций Gradle/Groovy

Я пытаюсь обойти проблему, описанную в GRADLE-2293, где сгенерированные файлы всегда обновляются. потому что временная метка записывается в файлы Eclipse, расположенные в каталоге .settings, с помощью плагина Gradle который генерирует файлы проекта Eclipse.

Файлы содержат такой заголовок, который я хотел бы удалить

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

В настоящее время я использую задачу Exec, чтобы использовать внешнее приложение sed для вырезания строк, начинающихся с «#»:

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

однако это добавляет зависимость от двоичных файлов операционной системы, которых я хотел бы избежать.

Как я могу сделать это простое удаление строк, начинающихся с «#», в задаче Gradle без вызова внешних инструментов?


person centic    schedule 24.04.2015    source источник


Ответы (1)


Есть действительно много способов сделать это, тот, что с ant, вероятно, самый надежный:

task removeLines << {
   ant.replaceregexp(match:'^#.*', replace:'', flags:'g', byline:true) {
      fileset(dir: project.projectDir, includes: 'lol')
   }
}                                                                                                                                                                             
person Opal    schedule 24.04.2015
comment
Спасибо, именно то, что я искал! - person centic; 24.04.2015
comment
Кстати, мне пришлось заменить rootDir на projectDir, чтобы он работал и в многопроектных настройках. - person centic; 24.04.2015