Есть ли способ изменить все содержимое файла при сборке Jar с помощью Gradle.?
В моем проекте есть вариант использования: мне нужно изменить содержимое файла класса при подготовке баночки и использовать пользовательский загрузчик классов для загрузки этого класса.
Для реализации описанного выше сценария я использовал следующий фрагмент
CopySpec
в моем
build.gradle
. Удивительно, но он работает с небольшими файлами классов, а не с большими. Что-то мне не хватает?
def contentSpec = copySpec {
from {
configurations.runtime.collect {it.isDirectory() ? it : zipTree(it)}
}
eachFile (new Action<FileCopyDetails>() {
@Override
void execute(FileCopyDetails fileCopyDetails) {
if (fileCopyDetails.getPath().contains('abc')) {
println fileCopyDetails.getPath()
byte[] content = fileCopyDetails.file.bytes;
byte[] newContent = encryptClass.encrypt(content)
println ("${content.length} -> ${newContent.length}")
fileCopyDetails.file.bytes = newContent
println fileCopyDetails.file.bytes.length
fileCopyDetails.setName(fileCopyDetails.getName().replace(".class",".enc"))
}
}
})
with jar
}```