关于build.gradle中compile与cordaCompile等依赖的差异及文档咨询
一、核心区别:compile vs cordaCompile
这是 Corda 项目中最容易混淆的两个依赖配置,核心差异在于是否会被打包进你的 CorDapp JAR 以及依赖的提供方:
compile(新版 Gradle 中已被implementation替代,但部分 Corda 项目仍在使用):
这类依赖是你的 CorDapp 编译和运行时都需要的,并且会被直接打包到最终的 CorDapp JAR 文件中。比如你引入的第三方工具库(如 JSON 解析库),因为 Corda 节点本身不包含这些库,所以必须随 CorDapp 一起分发。cordaCompile:
这是 Corda 自定义的依赖配置。这类依赖仅在编译 CorDapp 时需要,但运行时由 Corda 节点本身提供,因此不会被打包进 CorDapp JAR。典型例子是 Corda 核心库(如net.corda:corda-core、net.corda:corda-node)——如果将这些依赖用compile引入,会导致 JAR 重复打包,进而引发节点运行时的类冲突问题。
二、所有依赖类型的详细说明
除了上述两个核心配置,你提到的其他依赖类型作用如下:
testCompile(新版为testImplementation):
仅用于测试代码的编译和运行阶段,完全不会出现在生产环境的 CorDapp JAR 中。比如 JUnit、Mockito 等测试框架,或者 Corda 提供的测试工具(如net.corda:corda-node-driver)都属于这类。cordaRuntime:
这类依赖是 Corda 节点运行时需要,但你的 CorDapp 编译阶段不需要的。通常用于配置节点的扩展插件、第三方服务集成等场景——比如某些节点级别的加密插件,你的 CorDapp 代码不需要直接引用,但节点启动时需要加载它。
三、各依赖包的功能文档
当然有!Corda 官方文档针对每个核心依赖包都有详细的功能说明和使用指南:
corda-core:涵盖 Corda 最核心的概念(状态 State、合约 Contract、流 Flow 等)corda-node:包含节点启动、配置、网络交互相关的类corda-finance:提供金融场景的预定义合约和状态(如现金、债券)- 其他扩展包也有对应的文档章节,你可以通过官方文档的「API 参考」或「核心组件」板块找到详细信息。
内容的提问来源于stack exchange,提问作者Ben Tan

