Я бы проголосовал за плагин теневого градла . Он способен создавать Uber JAR-файлы, он достаточно универсален и способен на такие вещи, как перемещение классов, чтобы предотвратить ад зависимости .
Я не стану сравнивать два плагина, но пойду до того, что скажу, что я склонялся к использованию тени из-за того, что использовал приложение в прошлом из-за добавленных функций.
Когда я устаю от времени запуска сценариев Groovy на основе @Grab, я склонен писать файл сборки gradle, используя плагин shadow, даже для сценариев groovy с одним файлом. Пример файла сборки Gradle, способного собрать Uber JAR из файла groovy script в текущем каталоге. Имя основного класса должно соответствовать имени файла скрипта:
repositories {
jcenter()
mavenCentral()
}
defaultTasks = ['shadowJar']
version = "1.0"
dependencies {
compile "org.codehaus.groovy:groovy:2.4.7",
"commons-cli:commons-cli:1.2"
}
sourceSets {
main {
groovy {
srcDirs = [rootDir]
}
}
}
project.tasks.remove jar
shadowJar {
manifest {
attributes 'Main-Class': 'MyGroovyScriptName'
}
classifier = ""
}
Uber JAR будет сгенерирован в каталоге build/libs
.