- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前在 v2 中,如果 CorDapp 引用模块 X,该模块对模块 Y 具有传递依赖关系,因此 Corda 使用 Y,如果 Corda 和 X 各自的 Y 版本不同,则可能发生潜在的版本冲突。一个例子是重用现有的内部库,包含业务和序列化逻辑,它依赖于 Jackson
.
在这种情况下,生成的 CorDapp 打包和 Corda 运行时似乎强制执行与 Corda 相关的 Y 版本。
如果 Y 的版本差异很大,我们可以得到诸如 X 中断这样的场景,因为 Y 不支持某些类型和方法。
是否有一种通用方法可以使用 gradle 配置(或其他一些机制)来限制 Y 的正确版本以供 X 使用,而不影响 Corda 运行时?
最佳答案
所以我解决了这个问题,在这个过程中,终于学到了一些 gradle 基础知识(来自 maven 背景)。毫无疑问,以下内容是不雅的,可以更好地概括 - 但它有效!
TLDR:
shadowJar
cordapp
子模块使用它们或其依赖项与 Corda
冲突的依赖项。运行。 shadowJar
引用
build.gradle
文件添加以下内容
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
buildscript
dependencies
:
buildscript {
// ...
dependencies {
// ...
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
}
}
shadowJar
任务到
cordapp
cordapp
项目,申请
shadowJar
插入。
Please Note: I needed to put this before all existing plugins for it to work.
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'kotlin'
// ... etc
tasks {
shadowJar {
mergeServiceFiles()
// Place your shaded packages here!
relocate 'io.netty', 'shadow.io.netty'
relocate 'com.fasterxml', 'shadow.com.fasterxml'
configurations = [project.configurations.compile]
baseName = jar.baseName + "-" + jar.version
classifier = null
version = null
dependencies {
include(dependency(".*:.*:.*"))
exclude(dependency('org.jetbrains.kotlin:.*:.*'))
exclude(dependency('net.corda:.*:.*'))
exclude(dependency('org.apache.logging.*:.*:.*'))
exclude(dependency('org.apache.activemq:.*:.*'))
exclude(dependency('com.google.*:.*:.*'))
exclude(dependency('io.reactivex:.*:.*'))
exclude(dependency('org.bouncycastle.*:.*:.*'))
exclude(dependency('org.glassfish.*:.*:.*'))
exclude(dependency('co.paralleluniverse.*:.*:.*'))
exclude(dependency('co.paralleluniverse.*:.*:.*'))
exclude(dependency('com.typesafe.*:.*:.*'))
exclude(dependency('com.esotericsoftware.*:.*:.*'))
exclude(dependency('org.qpid.*:.*:.*'))
}
}
}
deployNodes
的定义不依赖
jar
任务,而是取决于每个模块的构建:
task deployNodes(type: net.corda.plugins.Cordform, dependsOn: [':cordapp-contracts-states:jar', ':cordapp:shadowJar']) {
// ... etc
}
关于corda - CorDapps 如何处理传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645361/
我目前正在尝试使用由countfloyd从github构建的手动付款栏示例来运行此Corda-settler。这是他的仓库中的link。在终端上运行命令gradlew clean deployNode
目前在 v2 中,如果 CorDapp 引用模块 X,该模块对模块 Y 具有传递依赖关系,因此 Corda 使用 Y,如果 Corda 和 X 各自的 Y 版本不同,则可能发生潜在的版本冲突。一个例子
我有一个基于Corda的项目,其中包含几个CorDapp子项目。我一直在寻找将JaCoCo代码覆盖范围添加到该项目中的方法。我希望在所有子项目JaCoCo报告的汇总报告中绘制一个代码覆盖率报告。 要将
我尝试创建具有两类状态(我的意思是两种不同状态)的 cordapp,但我没有找到这种情况的任何示例。我编写了不同的 ClientRPC 变体,但在尝试创建第二个状态时仍然有错误。是否可以实现?有人可以
我已经发布了我的CorDapp (corda 合约、状态和流程)使用发布任务和命令在 .m2 目录中创建项目:./gradlew cleanpublish。 现在,当我进入我的服务项目(单独的 gra
在 Corda 中,我想创建几个不同版本的响应程序流,每个版本都由不同的节点使用。 为此,我了解我需要在单独的 CorDapp 中定义每个响应程序流。但是,它们也都需要通过 InitiatedBy 注
我正在构建一个需要多个 CorDapps 的应用程序;我们就叫他们 LibCorDapp 和 AppCorDapp , 其中 AppCorDapp 取决于 LibCorDapp (就像 CorDapp
在 Corda 中,我想创建几个不同版本的响应程序流,每个版本都由不同的节点使用。 为此,我了解我需要在单独的 CorDapp 中定义每个响应程序流。但是,它们也都需要通过 InitiatedBy 注
我正在尝试运行描述的示例 cordapp here 问题是,当我运行 gradlew.bat deployNodes 命令时,我无法部署节点。我反复收到以下错误: Node in Notary exi
构建 CordApp-example 我将以下错误标记为致命但构建正常: 梯度构建 :java-source:compileJava[Fatal Error] corda-confidential-i
我尝试测试“Hello, World!”教程示例并收到以下错误: No matching constructor found: - [arg0: Integer, arg1: Party]: miss
当我尝试为 cordapp-template 中的流程运行此测试时: @Test fun flowRecordTransactionInBothVaults() { val flow = IO
我正在尝试运行 Contract 的 corda-bootcamp 测试用例。我按照视频中给出的方式进行操作,但是当尝试运行契约(Contract)测试时 - 我收到错误 java.io.NotSer
和有什么区别 编译 corda编译 科尔应用 例如: dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotl
我一直在努力完成 Hello, World! Tutorial从V2.0开始,无法导入以下变量。 import static net.corda.docs.java.tutorial.hellowor
我看到多次调用路线/问题,不确定为什么会出现这样的行为 // initiate a flow using this route @GetMapping(value = "/issue"
当第一次使用 Kotlin-source 运行 corDapp(corDapp-example) 时,IntelliJ 会抛出这个错误——“在模块‘cordapp-example’中找不到错误类‘co
我们创建了一个应用程序: 2 个节点 + 1 个公证人 2 个 Web 应用程序(每个节点一个) Corda 版本为 3.2 CordApp 具有: 第一个流程,在输入中接收对象列表,用于创建状态列表
我正在为 Corda 构建工作流程。我想使用 Hikari 连接池库来连接 MySql 数据库。我不想替换 Ledger H2 数据库。该数据库用于存储/检索一些信息,这些信息在分类帐中不需要。我无需
每当我运行运行示例 Cordapp-Java 时,都会收到此错误。我是 Corda 新手,正在向 Corda 文档学习。请帮帮我。 at net.corda.testing.driver.Driver
我是一名优秀的程序员,十分优秀!