Я клонировал репозиторий corda-training-template и хотел проверить ограничения подписи в Corda v4.x. Вместо того, чтобы получить тестовый ключ для подписи фляги, я бы для удобства выбрал стандартный ключ corda dev. Тем не менее, я понимаю, что шнур dev-key используется по умолчанию, если вы не вводите никаких пользовательских учетных данных, чтобы все jar-файлы были подписаны им. Однако он продолжает печатать сообщение об ошибке во время сборки как:
* What went wrong:
Execution failed for task ':kotlin-source:jar'. > Exception while signing kotlin-source-0.1.jar, ensure the 'cordapp.signing.options' entry contains correct keyStore configuration, or disable signing by 'cordapp.signing.enabled false'. Run with --info or --debug option and search for 'ant:signjar' in log output.
Ниже приведен оригинальный build.gradle для kotlin-source с удаленной подписью enable false:
repositories {
mavenLocal()
jcenter()
mavenCentral()
maven { url 'https://dl.bintray.com/kotlin/exposed' }
maven { url 'https://jitpack.io' }
maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' }
}
apply plugin: 'kotlin'
apply plugin: 'idea'
apply plugin: 'net.corda.plugins.cordapp'
apply plugin: 'net.corda.plugins.publish-utils'
apply plugin: 'net.corda.plugins.cordformation'
apply plugin: 'net.corda.plugins.quasar-utils'
apply plugin: 'maven-publish'
cordapp {
targetPlatformVersion 4
minimumPlatformVersion 3
contract {
name "Corda Training Material"
vendor "R3"
licence "Contact R3 for Kotlin Source Contract License."
versionId 1
}
workflow {
name "Corda Training Material"
vendor "R3"
licence "Contact R3 for Kotlin Source Workflow License."
versionId 1
}
}
sourceSets {
main {
resources {
srcDir "../config/dev"
}
}
test {
resources {
srcDir "../config/test"
}
}
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
testCompile "junit:junit:$junit_version"
// Corda integration dependencies
cordaCompile "$corda_release_distribution:corda-core:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-finance-contracts:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-finance-workflows:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-jackson:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-rpc:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-node-api:$corda_release_version"
cordaCompile "$corda_release_distribution:corda-webserver-impl:$corda_release_version"
cordaRuntime "$corda_release_distribution:corda:$corda_release_version"
cordaRuntime "$corda_release_distribution:corda-webserver:$corda_release_version"
testCompile "$corda_release_distribution:corda-test-utils:$corda_release_version"
testCompile "$corda_release_distribution:corda-node-driver:$corda_release_version"
// GraphStream: For visualisation (required by TemplateClientRPC app)
compile "org.graphstream:gs-core:1.3"
compile("org.graphstream:gs-ui:1.3") {
exclude group: "bouncycastle"
}
// CorDapp dependencies
// Specify your cordapp's dependencies below, including dependent cordapps
cordapp "$corda_release_distribution:corda-finance-contracts:$corda_release_version"
cordapp "$corda_release_distribution:corda-finance-workflows:$corda_release_version"
cordapp "$corda_release_distribution:corda-confidential-identities:$corda_release_version"
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
languageVersion = "1.2"
apiVersion = "1.2"
jvmTarget = "1.8"
javaParameters = true // Useful for reflection.
}
}
task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
delete "./build/nodes"
directory "./build/nodes"
nodeDefaults {
cordapp("$corda_release_distribution:corda-finance-contracts:$corda_release_version")
cordapp("$corda_release_distribution:corda-finance-workflows:$corda_release_version")
cordapp("$corda_release_distribution:corda-confidential-identities:$corda_release_version")
rpcUsers = [[ user: "user1", "password": "password", "permissions": ["ALL"]]]
}
node {
name "O=Notary,L=London,C=GB"
notary = [validating: false]
p2pPort 10002
rpcSettings {
useSsl false
standAloneBroker false
address "0.0.0.0:10003"
adminAddress "0.0.0.0:10103"
}
}
node {
name "O=ParticipantA,L=London,C=GB"
p2pPort 10007
webPort 10009
rpcSettings {
useSsl false
standAloneBroker false
address "0.0.0.0:10008"
adminAddress "0.0.0.0:10108"
}
}
node {
name "O=ParticipantB,L=New York,C=US"
p2pPort 10010
webPort 10012
rpcSettings {
useSsl false
standAloneBroker false
address "0.0.0.0:10011"
adminAddress "0.0.0.0:10111"
}
}
node {
name "O=ParticipantC,L=Paris,C=FR"
p2pPort 10013
webPort 10015
rpcSettings {
useSsl false
standAloneBroker false
address "0.0.0.0:10014"
adminAddress "0.0.0.0:10114"
}
}
}
idea {
module {
downloadJavadoc = true // defaults to false
downloadSources = true
}
}
InВ ответ на сообщение об ошибке я добавил следующее в build.gradle под обоими запросами cordapp (https://docs.corda.net/releases/release-V4.0/cordapp-build-systems.html#signing-the-cordapp-jar) и deployNodes (https://docs.corda.net/releases/release-V4.0/generating-a-node.html#signing-cordapp-jars)) в разных перестановках, но одно и то же сообщение об ошибке с запросом правильной конфигурации хранилища ключей сохраняетпоказывается:
signing {
enabled true
options {
keystore
alias
storepass
storetype
keyalg
}
}
Без упоминания учетных данных хранилища ключей или даже без указания параметров подписи, corda должен собрать банку с ключами dev по умолчанию, но это не так.