java - Uberjar仅具有依赖项

标签 java gradle google-cloud-dataflow uberjar shadowjar

我正在使用Google Cloud Dataflow来运行具有很多依赖关系的Apache Beam作业。通常,除非我对整个项目进行 super 打包,否则数据流将拒绝执行该图,因为依赖项列表过长。

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

最佳答案

您可以仅使用Jar依赖项来创建特定的compile任务

task uberJarDependencies(type: Jar) {
    baseName "dependencies"
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

然后,gradle uberJarDependencies将产生以下jar:build/libs/dependencies.jar

关于java - Uberjar仅具有依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195711/

相关文章:

java - 在设计系统的其他部分之前开发原型(prototype) GUI 是否明智?

android - 我无法在 Android 上运行 firebase 崩溃报告

android - 将 Android Studio 更新到 3.1.3 后依赖项出现一些错误

character-encoding - Apache Beam/GCP 数据流编码问题

google-cloud-dataflow - 如何使用 DatastoreIO 和 Dataflow 批量删除数百万个实体

Java - GUI、面板和数据访问

java - 为什么我必须覆盖 toString 方法而不是仅仅创建另一个方法?

java - 如何修复UnsatisfiedLinkError?

android - Android Studio 中不支持的类型 'add-resource'

google-cloud-dataflow - 通过 Dataflow 从 Google Cloud Storage 读取大型 gzip JSON 文件到 BigQuery