Используйте gradle для создания jarfile из других jarfiles - PullRequest
1 голос
/ 05 октября 2019

У меня есть простая проблема: у меня есть каталог, полный jarfiles, и я хочу использовать gradle (v4.4.1), чтобы объединить содержимое этих jarfiles в один jarfile (т. Е. Когда я делаю jar tf)big-jar.jar, я хочу увидеть кучу классов, а не кучу банок). Я попробовал следующее:

task bigJar(type: Jar) {
    inputs.dir "$distLibsJar"
    outputs.file "$distDir/big-jar.jar"

    destinationDir = file("$distDir")
    baseName = "big-jar"
    from("$distLibsDir")
}

, но при этом создается файл jar с другими файлами в качестве содержимого, а не содержимым этих других объектов в качестве содержимого объединенного файла.

Есть идеи? Спасибо ...

1 Ответ

0 голосов
/ 11 октября 2019

В этом случае лучше всего воспользоваться банкой shadow . для этого у вас может быть такая конфигурация в build.gradle. выложить пример

 apply plugin: 'com.github.johnrengelman.shadow'

           shadowJar {
               zip64 true
               //classifier "shadow" can be mentioned according to need
            mergeServiceFiles()
            artifacts {
                shadow(tasks.shadowJar.archivePath) {
                    builtBy shadowJar
                }
            }
        }
        artifacts {
                archives shadowJar
        }

    distZip {
            dependsOn shadowJar
            //appendix='software'
            eachFile { file ->
                String path = file.relativePath
                file.setPath(path.substring(path.indexOf("/")+1,path.length()))
            }

            doLast{
                        //operation to perform


            }
        }
        distributions {
                main {
                    contents {
                       //from and to can be mentioned here
                    }
                }

            }  

надеюсь, это поможет

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