Заменить содержимое файла в Kotlin DSL - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу создать задачу gradle, которая заменит мой импорт.Я создал это до сих пор.

val replaceImports by creating(Copy::class) {
    val dir = "${project.buildDir}/generated-sources/xjc/com/test/dto/"
    from(dir){
        include("TestSourceClass.java")
        filter{ line -> line.replace("package com.test;","package com.test;\n\nimport com.test2.AaaClass;")}
    }
    into(dir)
}

Этот код работает, только если from и into - это другой каталог.

1 Ответ

0 голосов
/ 28 февраля 2019

Как уже упоминалось в комментариях и как это работает, вместо этого вы можете сделать следующее:

val replaceImports by creating(Copy::class) {
  dir.walk()
     .filter { /* if that should be a filter */ it.name == "TestSourceClass.java" }
     .forEach { it.writeText(it.readText().replace("package com.test;","package com.test;\n\nimport com.test2.AaaClass;")) }
}

Обратите внимание, что вас могут также заинтересовать привязки схемы, в зависимости от того, как вы генерируете свой код.Сканирование по всем файлам, которые были только что сгенерированы ранее, чтобы снова их адаптировать, может оказаться не самым быстрым выбором, в то время как предоставление генератору соответствующих привязок уже сгенерирует вам код, как требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...