Как заменить текст в файлах, используя функциональность 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')
   }
}                                                                                                                                                                             
Другие вопросы по тегам