构建 cordapp jar 并部署到新节点

Building cordapp jar and deploy in new node

我正在尝试整合这两个例子(Corda java 模板:https://github.com/corda/cordapp-template-java and Oracle example: https://github.com/corda/oracle-example )以便在模板中整合Oracle节点。 我更改了 build.gradle、settings.gradle 并将基础和服务包复制到模板文件夹。虽然,该项目在逻辑上没有链接,因为 Oracle 对应于不同的服务,但它确实在构建文件夹下成功编译和创建 类。重新同步 gradle 项目后,gradle 任务已成功更新,我能够 运行 成功部署节点。

但是,build/nodes/Oracle/cordapp 文件夹中没有 jar。

如果需要进行其他更改,请告知。
Git url 所做的更改:https://github.com/ashubisht/cordapp-template-java/tree/OracleIntegration_IOURelV3_0307

这是更新后的 gradle 文件

    buildscript {
        ext.corda_release_group = 'net.corda'
        ext.corda_release_version = '3.1-corda'
        ext.corda_gradle_plugins_version = '3.1.0'
        ext.junit_version = '4.12'
        ext.quasar_version = '0.7.9'
        ext.kotlin_version = '1.1.60'

        repositories {
            mavenLocal()
            mavenCentral()
            jcenter()
        }

        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "net.corda.plugins:cordapp:$corda_gradle_plugins_version"
            classpath "net.corda.plugins:cordformation:$corda_gradle_plugins_version"
            classpath "net.corda.plugins:quasar-utils:$corda_gradle_plugins_version"
        }
    }

    repositories {
        mavenLocal()
        jcenter()
        mavenCentral()
        maven { url 'https://jitpack.io' }
        maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' }
    }

    apply plugin: 'kotlin'
    apply plugin: 'java'
    apply plugin: 'net.corda.plugins.cordapp'
    apply plugin: 'net.corda.plugins.cordformation'
    apply plugin: 'net.corda.plugins.quasar-utils'

    sourceSets {
        main {
            resources {
                srcDir "config/dev"
            }
        }
        test {
            resources {
                srcDir "config/test"
            }
        }
        integrationTest {
            java {
                compileClasspath += main.output + test.output
                runtimeClasspath += main.output + test.output
                srcDir file('src/integration-test/java')
            }
        }
    }

    configurations {
        integrationTestCompile.extendsFrom testCompile
        integrationTestRuntime.extendsFrom testRuntime
    }

    dependencies {
        testCompile "junit:junit:$junit_version"

        // Corda integration dependencies
        cordaCompile "$corda_release_group:corda-core:$corda_release_version"
        cordaCompile "$corda_release_group:corda-finance:$corda_release_version"
        cordaCompile "$corda_release_group:corda-jackson:$corda_release_version"
        cordaCompile "$corda_release_group:corda-rpc:$corda_release_version"
        cordaCompile "$corda_release_group:corda-node-api:$corda_release_version"
        cordaCompile "$corda_release_group:corda-webserver-impl:$corda_release_version"
        cordaRuntime "$corda_release_group:corda:$corda_release_version"
        cordaRuntime "$corda_release_group:corda-webserver:$corda_release_version"

        testCompile "$corda_release_group:corda-node-driver:$corda_release_version"

        // CorDapp dependencies
        // Specify your CorDapp's dependencies below, including dependent CorDapps.
        // We've defined Cash as a dependent CorDapp as an example.
        cordapp project(":cordapp")
        cordapp project(":cordapp-contracts-states")
        //Added oracle support to template for testing/ experimenting configs
        cordapp project(":base")
        cordapp project(":service")
        //Oracle changes end here
        cordapp "$corda_release_group:corda-finance:$corda_release_version"
    }

    task integrationTest(type: Test, dependsOn: []) {
        testClassesDir = sourceSets.integrationTest.output.classesDir
        classpath = sourceSets.integrationTest.runtimeClasspath
    }

    tasks.withType(JavaCompile) {
        options.compilerArgs << "-parameters" // Required for passing named arguments to your flow via the shell.
    }

    task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
        directory "./build/nodes"
        node {
            name "O=Notary,L=London,C=GB"
            notary = [validating : true]
            p2pPort 10002
            cordapps = [
                    "$project.group:cordapp-contracts-states:$project.version",
                    "$project.group:cordapp:$project.version",
                    "$corda_release_group:corda-finance:$corda_release_version"
            ]
        }
        node {
            name "O=PartyA,L=London,C=GB"
            p2pPort 10005
            rpcSettings {
                address("localhost:10006")
                adminAddress("localhost:10046")
            }
            webPort 10007
            cordapps = [
                    "$project.group:cordapp-contracts-states:$project.version",
                    "$project.group:cordapp:$project.version",
                    "$corda_release_group:corda-finance:$corda_release_version"
            ]
            rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
        }
        node {
            name "O=PartyB,L=New York,C=US"
            p2pPort 10008
            rpcSettings {
                address("localhost:10009")
                adminAddress("localhost:10049")
            }
            webPort 10010
            cordapps = [
                    "$project.group:cordapp-contracts-states:$project.version",
                    "$project.group:cordapp:$project.version",
                    "$corda_release_group:corda-finance:$corda_release_version"
            ]
            rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
        }
        node {
            name "O=Oracle,L=New York,C=US"
            p2pPort 10011
            rpcSettings {
                address("localhost:10012")
                adminAddress("localhost:10052")
            }
            webPort 10013
            //The below cordapps will be deployed to oracle.
            //Create below packages named base and service and add to dependency
            cordapps = [
                    "$project.group:cordapp-contracts-states:$project.version",
                    "net.corda.examples.oracle:base:1.0",
                        "net.corda.examples.oracle:service:1.0"
            ]
            rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
        }
    }

    task runTemplateClient(type: JavaExec) {
        classpath = sourceSets.main.runtimeClasspath
        main = 'com.template.TemplateClient'
        args 'localhost:10006'
    }

deployNodes 中定义您的预言机节点时,您提供了以下 cordapps 块:

cordapps = [
    "$project.group:cordapp-contracts-states:$project.version",
    "net.corda.examples.oracle:base:1.0",
    "net.corda.examples.oracle:service:1.0"
]

但是,您项目的 gradle.properties 文件中给定的项目组是 com.template。因此,您需要按如下方式指定您的 CorDapps:

cordapps = [
    "$project.group:cordapp-contracts-states:$project.version",
    "com.template:base:0.1",
    "com.template:service:0.1"
]

或者,您可以使用以下 shorthand:

cordapps = [
    "$project.group:cordapp-contracts-states:$project.version",
    "$project.group:base:0.1",
    "$project.group:service:0.1"
]