Corda RPC 客户端外部依赖
Corda RPC client external dependencies
假设我有一个用于 corda 的小型 RPC 客户端应用程序,它应该被上传到节点中,并被调用以在节点上执行一些实用程序工作。
在我的实用程序 RPC 客户端的 build.gradle
文件中,我只有以下依赖项 cordaCompile "$corda_release_group:corda-rpc:$corda_release_version"
,我的 JAR 任务看起来像这样
jar {
version = ''
baseName = 'rpc_utility'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes 'Main-Class': 'com.example.rpcclient.MainKt'
}
zip64=true
from { (configurations.compile).collect { it.isDirectory() ? it : zipTree(it) } }
}
但是当我创建我的 jar 时,它会产生 58 MB 的 Jar 文件,其中包含 Corda 的所有依赖项,它们已经存在于节点中,打包在 corda.jar
文件中。并且 cordapps 可以使用这些库,而无需将它们放在它们的 JAR 文件中。
现在的问题是,我应该如何配置我的 jar 任务以及我应该在其中包含什么来告诉 Java 它需要的所有依赖项都在那里,在 [=22= 中的同一个文件夹中] 文件。
P.S。我也尝试像现在这样创建一个胖罐子,然后用 Proguard 缩小它,但即使在很长的 proguard-rules 列表之后我仍然有错误,因为 Proguard 似乎删除了 Corda 需要的很多文件,所以这看起来这不是一个好的解决方案,即使我成功了,我也会得到一个 ~20 MB 的文件,仅用于我实际拥有的几行代码...
客户端 jar 大小合适。它不仅包括 Corda 的依赖项,还包括您实际的 CorDapp jar(合同和工作流程)。原因是:
- RPC 客户端需要与 Corda 节点通信,因此它需要 Corda 依赖项。
- 它还需要了解您的 CorDapps,因为您的控制器将直接调用流程。
假设我有一个用于 corda 的小型 RPC 客户端应用程序,它应该被上传到节点中,并被调用以在节点上执行一些实用程序工作。
在我的实用程序 RPC 客户端的 build.gradle
文件中,我只有以下依赖项 cordaCompile "$corda_release_group:corda-rpc:$corda_release_version"
,我的 JAR 任务看起来像这样
jar {
version = ''
baseName = 'rpc_utility'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes 'Main-Class': 'com.example.rpcclient.MainKt'
}
zip64=true
from { (configurations.compile).collect { it.isDirectory() ? it : zipTree(it) } }
}
但是当我创建我的 jar 时,它会产生 58 MB 的 Jar 文件,其中包含 Corda 的所有依赖项,它们已经存在于节点中,打包在 corda.jar
文件中。并且 cordapps 可以使用这些库,而无需将它们放在它们的 JAR 文件中。
现在的问题是,我应该如何配置我的 jar 任务以及我应该在其中包含什么来告诉 Java 它需要的所有依赖项都在那里,在 [=22= 中的同一个文件夹中] 文件。
P.S。我也尝试像现在这样创建一个胖罐子,然后用 Proguard 缩小它,但即使在很长的 proguard-rules 列表之后我仍然有错误,因为 Proguard 似乎删除了 Corda 需要的很多文件,所以这看起来这不是一个好的解决方案,即使我成功了,我也会得到一个 ~20 MB 的文件,仅用于我实际拥有的几行代码...
客户端 jar 大小合适。它不仅包括 Corda 的依赖项,还包括您实际的 CorDapp jar(合同和工作流程)。原因是:
- RPC 客户端需要与 Corda 节点通信,因此它需要 Corda 依赖项。
- 它还需要了解您的 CorDapps,因为您的控制器将直接调用流程。