Java 只包含依赖项的Uberjar

Java 只包含依赖项的Uberjar,java,gradle,google-cloud-dataflow,uberjar,shadowjar,Java,Gradle,Google Cloud Dataflow,Uberjar,Shadowjar,我正在使用GoogleCloudDataflow运行一个ApacheBeam作业,该作业具有很多依赖项。通常,除非我完成整个项目,否则dataflow将拒绝执行图形,因为依赖项列表太长 有没有办法只将项目依赖项放在uberjar中,而让其余的数据流留在外部?我认为,由于依赖关系是相当静态的,因此当我的项目中只有几个类发生了更改时,我可以节省大量时间重新Jar和重新加载整个uberjar。例如,您可以使用编译依赖关系创建特定的Jar任务 task uberJarDependencies(type:

我正在使用GoogleCloudDataflow运行一个ApacheBeam作业,该作业具有很多依赖项。通常,除非我完成整个项目,否则dataflow将拒绝执行图形,因为依赖项列表太长


有没有办法只将项目依赖项放在uberjar中,而让其余的数据流留在外部?我认为,由于依赖关系是相当静态的,因此当我的项目中只有几个类发生了更改时,我可以节省大量时间重新Jar和重新加载整个uberjar。

例如,您可以使用
编译
依赖关系创建特定的
Jar
任务

task uberJarDependencies(type: Jar) {
    baseName "dependencies"
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
然后,
gradle-uberJarDependencies
将生成以下jar:
build/libs/dependencies.jar