Как заменить текст в файлах с помощью функций 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 без вызова внешних инструментов?

1 ответов


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

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