Есть ли способ изменить все содержимое файла при сборке 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
}```

0 ответов

Другие вопросы по тегам